@giveitsmaller/contracts 0.61.0 → 0.63.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 +34 -0
- package/accepted-options/accepted-options.json +1 -1
- package/accepted-options/image-output-routes.json +1 -1
- package/asyncapi/README.md +16 -0
- package/asyncapi/events.yaml +22 -0
- package/availability/README.md +25 -0
- package/availability/availability.json +32 -11
- package/code-builder/code-builder-metadata.json +5 -5
- package/dist/openapi/models/AccountLimitEntry.d.ts +7 -5
- 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 +7 -1
- package/dist/openapi/models/AccountLimitsLimits.js +3 -1
- package/dist/openapi/models/AccountLimitsSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/AccountLimitsSuccessEnvelope.js +1 -1
- package/dist/openapi/models/AudioWatermarkDecodeRequest.d.ts +1 -1
- package/dist/openapi/models/AudioWatermarkDecodeRequest.js +1 -1
- package/dist/openapi/models/AudioWatermarkDecodeResponse.d.ts +1 -1
- package/dist/openapi/models/AudioWatermarkDecodeResponse.js +1 -1
- package/dist/openapi/models/AuthErrorResponse.d.ts +1 -1
- package/dist/openapi/models/AuthErrorResponse.js +1 -1
- package/dist/openapi/models/AuthErrorType.d.ts +1 -1
- package/dist/openapi/models/AuthErrorType.js +1 -1
- package/dist/openapi/models/AuthRejectionEnvelope.d.ts +1 -1
- package/dist/openapi/models/AuthRejectionEnvelope.js +1 -1
- package/dist/openapi/models/AvailabilityValue.d.ts +1 -1
- package/dist/openapi/models/AvailabilityValue.js +1 -1
- package/dist/openapi/models/BalanceExhaustedResponse.d.ts +1 -1
- package/dist/openapi/models/BalanceExhaustedResponse.js +1 -1
- package/dist/openapi/models/BalanceExhaustedResponseAllOfLinks.d.ts +1 -1
- package/dist/openapi/models/BalanceExhaustedResponseAllOfLinks.js +1 -1
- package/dist/openapi/models/BillingCheckoutRequest.d.ts +1 -1
- package/dist/openapi/models/BillingCheckoutRequest.js +1 -1
- package/dist/openapi/models/BillingCheckoutSession.d.ts +1 -1
- package/dist/openapi/models/BillingCheckoutSession.js +1 -1
- package/dist/openapi/models/BillingCheckoutSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/BillingCheckoutSuccessEnvelope.js +1 -1
- package/dist/openapi/models/CallbackEventType.d.ts +1 -1
- package/dist/openapi/models/CallbackEventType.js +1 -1
- package/dist/openapi/models/CancelAccountDeletion200Response.d.ts +46 -0
- package/dist/openapi/models/CancelAccountDeletion200Response.js +54 -0
- package/dist/openapi/models/CancelAccountDeletion200ResponseData.d.ts +32 -0
- package/dist/openapi/models/CancelAccountDeletion200ResponseData.js +43 -0
- 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 +3 -10
- package/dist/openapi/models/CapabilityConditionOneOf5.js +1 -7
- 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 +3 -10
- package/dist/openapi/models/CapabilityProducesOneOf.js +1 -7
- package/dist/openapi/models/CapabilityProducesOneOf1.d.ts +1 -1
- package/dist/openapi/models/CapabilityProducesOneOf1.js +1 -1
- package/dist/openapi/models/CapabilityProducesOneOf2.d.ts +1 -1
- package/dist/openapi/models/CapabilityProducesOneOf2.js +1 -1
- package/dist/openapi/models/ChangePasswordRequest.d.ts +1 -1
- package/dist/openapi/models/ChangePasswordRequest.js +1 -1
- package/dist/openapi/models/CodegenSource.d.ts +1 -1
- package/dist/openapi/models/CodegenSource.js +1 -1
- package/dist/openapi/models/CodegenSourceInput.d.ts +1 -1
- package/dist/openapi/models/CodegenSourceInput.js +1 -1
- package/dist/openapi/models/CodegenSourceJob.d.ts +1 -1
- package/dist/openapi/models/CodegenSourceJob.js +1 -1
- package/dist/openapi/models/CodegenSourceJobSource.d.ts +1 -1
- package/dist/openapi/models/CodegenSourceJobSource.js +1 -1
- package/dist/openapi/models/CodegenSourceOperation.d.ts +1 -1
- package/dist/openapi/models/CodegenSourceOperation.js +1 -1
- package/dist/openapi/models/CodegenUploadPlaceholder.d.ts +21 -4
- package/dist/openapi/models/CodegenUploadPlaceholder.js +1 -1
- package/dist/openapi/models/CompositionPlan.d.ts +1 -1
- package/dist/openapi/models/CompositionPlan.js +1 -1
- package/dist/openapi/models/CompositionPlanJob.d.ts +1 -1
- package/dist/openapi/models/CompositionPlanJob.js +1 -1
- package/dist/openapi/models/CompositionPlanOperation.d.ts +1 -1
- package/dist/openapi/models/CompositionPlanOperation.js +1 -1
- package/dist/openapi/models/ConfirmEmailChange200Response.d.ts +1 -1
- package/dist/openapi/models/ConfirmEmailChange200Response.js +1 -1
- package/dist/openapi/models/ConfirmEmailChange200ResponseData.d.ts +1 -1
- package/dist/openapi/models/ConfirmEmailChange200ResponseData.js +1 -1
- package/dist/openapi/models/ConfirmEmailChangeRequest.d.ts +1 -1
- package/dist/openapi/models/ConfirmEmailChangeRequest.js +1 -1
- package/dist/openapi/models/ConnectionSource.d.ts +1 -1
- package/dist/openapi/models/ConnectionSource.js +1 -1
- package/dist/openapi/models/ContactRequest.d.ts +1 -1
- package/dist/openapi/models/ContactRequest.js +1 -1
- package/dist/openapi/models/ContactSubject.d.ts +1 -1
- package/dist/openapi/models/ContactSubject.js +1 -1
- package/dist/openapi/models/ContactValidationErrorResponse.d.ts +1 -1
- package/dist/openapi/models/ContactValidationErrorResponse.js +1 -1
- package/dist/openapi/models/CreateApiKey201Response.d.ts +1 -1
- package/dist/openapi/models/CreateApiKey201Response.js +1 -1
- package/dist/openapi/models/CreateApiKey201ResponseData.d.ts +1 -1
- package/dist/openapi/models/CreateApiKey201ResponseData.js +1 -1
- package/dist/openapi/models/CreateApiKeyRequest.d.ts +1 -1
- package/dist/openapi/models/CreateApiKeyRequest.js +1 -1
- package/dist/openapi/models/CreateBillingCheckoutSession422Response.d.ts +1 -1
- package/dist/openapi/models/CreateBillingCheckoutSession422Response.js +1 -1
- package/dist/openapi/models/CreateExternalImport403Response.d.ts +1 -1
- package/dist/openapi/models/CreateExternalImport403Response.js +1 -1
- package/dist/openapi/models/CreateExternalImport422Response.d.ts +1 -1
- package/dist/openapi/models/CreateExternalImport422Response.js +1 -1
- package/dist/openapi/models/CreateWorkflow401Response.d.ts +1 -1
- package/dist/openapi/models/CreateWorkflow401Response.js +1 -1
- package/dist/openapi/models/CreateWorkflow422Response.d.ts +1 -1
- package/dist/openapi/models/CreateWorkflow422Response.js +1 -1
- package/dist/openapi/models/CreditTransaction.d.ts +1 -1
- package/dist/openapi/models/CreditTransaction.js +1 -1
- package/dist/openapi/models/CreditTransactionSourceBucket.d.ts +1 -1
- package/dist/openapi/models/CreditTransactionSourceBucket.js +1 -1
- package/dist/openapi/models/CreditsBalanceResponse.d.ts +1 -1
- package/dist/openapi/models/CreditsBalanceResponse.js +1 -1
- package/dist/openapi/models/CreditsBalanceSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/CreditsBalanceSuccessEnvelope.js +1 -1
- package/dist/openapi/models/CreditsUsageResponse.d.ts +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/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 +46 -0
- package/dist/openapi/models/ExportAccountData200Response.js +54 -0
- package/dist/openapi/models/ExportAccountData200ResponseData.d.ts +62 -0
- package/dist/openapi/models/ExportAccountData200ResponseData.js +55 -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/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/MediaCategory.d.ts +31 -0
- package/dist/openapi/models/MediaCategory.js +49 -0
- 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/OperationResponse.d.ts +1 -1
- package/dist/openapi/models/OperationResponse.js +1 -1
- package/dist/openapi/models/OperationResult.d.ts +1 -1
- package/dist/openapi/models/OperationResult.js +1 -1
- package/dist/openapi/models/OperationResultMetadata.d.ts +1 -1
- package/dist/openapi/models/OperationResultMetadata.js +1 -1
- package/dist/openapi/models/OperationResultMetrics.d.ts +1 -1
- package/dist/openapi/models/OperationResultMetrics.js +1 -1
- package/dist/openapi/models/OperationSchemaDefinition.d.ts +1 -1
- package/dist/openapi/models/OperationSchemaDefinition.js +1 -1
- package/dist/openapi/models/OperationStatus.d.ts +1 -1
- package/dist/openapi/models/OperationStatus.js +1 -1
- package/dist/openapi/models/OperationType.d.ts +1 -1
- package/dist/openapi/models/OperationType.js +1 -1
- package/dist/openapi/models/OperationsSchemaResponse.d.ts +8 -1
- package/dist/openapi/models/OperationsSchemaResponse.js +4 -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 +1 -1
- package/dist/openapi/models/ProbePendingResponse.js +1 -1
- package/dist/openapi/models/ProcessingClass.d.ts +1 -1
- package/dist/openapi/models/ProcessingClass.js +1 -1
- package/dist/openapi/models/ProcessingClassBandViolation.d.ts +1 -1
- package/dist/openapi/models/ProcessingClassBandViolation.js +1 -1
- package/dist/openapi/models/ProcessingClassConstraints.d.ts +1 -1
- package/dist/openapi/models/ProcessingClassConstraints.js +1 -1
- package/dist/openapi/models/ProcessingClassEntry.d.ts +1 -1
- package/dist/openapi/models/ProcessingClassEntry.js +1 -1
- package/dist/openapi/models/ProcessingClassExceedsBandResponse.d.ts +1 -1
- package/dist/openapi/models/ProcessingClassExceedsBandResponse.js +1 -1
- package/dist/openapi/models/ProcessingClassHint.d.ts +1 -1
- package/dist/openapi/models/ProcessingClassHint.js +1 -1
- package/dist/openapi/models/ProcessingClassReason.d.ts +1 -1
- package/dist/openapi/models/ProcessingClassReason.js +1 -1
- package/dist/openapi/models/ProcessingClassRejectReason.d.ts +1 -1
- package/dist/openapi/models/ProcessingClassRejectReason.js +1 -1
- package/dist/openapi/models/ProcessingPlan.d.ts +1 -1
- package/dist/openapi/models/ProcessingPlan.js +1 -1
- package/dist/openapi/models/ProcessingPlanJob.d.ts +1 -1
- package/dist/openapi/models/ProcessingPlanJob.js +1 -1
- package/dist/openapi/models/ReEncodeDecision.d.ts +1 -1
- package/dist/openapi/models/ReEncodeDecision.js +1 -1
- package/dist/openapi/models/ReadinessResponse.d.ts +1 -1
- package/dist/openapi/models/ReadinessResponse.js +1 -1
- package/dist/openapi/models/RegisterUser422Response.d.ts +1 -1
- package/dist/openapi/models/RegisterUser422Response.js +1 -1
- package/dist/openapi/models/RegisterUserRequest.d.ts +1 -1
- package/dist/openapi/models/RegisterUserRequest.js +1 -1
- package/dist/openapi/models/RequestAccountDeletion200Response.d.ts +46 -0
- package/dist/openapi/models/RequestAccountDeletion200Response.js +54 -0
- package/dist/openapi/models/RequestAccountDeletion200ResponseData.d.ts +41 -0
- package/dist/openapi/models/RequestAccountDeletion200ResponseData.js +47 -0
- package/dist/openapi/models/RequestAccountDeletionRequest.d.ts +32 -0
- package/dist/openapi/models/RequestAccountDeletionRequest.js +43 -0
- package/dist/openapi/models/ResendVerificationEmailRequest.d.ts +1 -1
- package/dist/openapi/models/ResendVerificationEmailRequest.js +1 -1
- package/dist/openapi/models/ResetPasswordRequest.d.ts +1 -1
- package/dist/openapi/models/ResetPasswordRequest.js +1 -1
- package/dist/openapi/models/ResponseEnvelope.d.ts +1 -1
- package/dist/openapi/models/ResponseEnvelope.js +1 -1
- package/dist/openapi/models/RetryResponse.d.ts +1 -1
- package/dist/openapi/models/RetryResponse.js +1 -1
- package/dist/openapi/models/RetrySuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/RetrySuccessEnvelope.js +1 -1
- package/dist/openapi/models/SseCompletionBase.d.ts +1 -1
- package/dist/openapi/models/SseCompletionBase.js +1 -1
- package/dist/openapi/models/SseEventType.d.ts +1 -1
- package/dist/openapi/models/SseEventType.js +1 -1
- package/dist/openapi/models/SseJobCompletedData.d.ts +1 -1
- package/dist/openapi/models/SseJobCompletedData.js +1 -1
- package/dist/openapi/models/SseJobFailedData.d.ts +1 -1
- package/dist/openapi/models/SseJobFailedData.js +1 -1
- package/dist/openapi/models/SseMultiOutputCompletion.d.ts +1 -1
- package/dist/openapi/models/SseMultiOutputCompletion.js +1 -1
- package/dist/openapi/models/SseMultiOutputCompletionMetrics.d.ts +1 -1
- package/dist/openapi/models/SseMultiOutputCompletionMetrics.js +1 -1
- package/dist/openapi/models/SseMultiOutputCompletionWithKind.d.ts +1 -1
- package/dist/openapi/models/SseMultiOutputCompletionWithKind.js +1 -1
- package/dist/openapi/models/SseMultiOutputResultEntry.d.ts +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/TierDefaultLimits.d.ts +59 -0
- package/dist/openapi/models/TierDefaultLimits.js +47 -0
- package/dist/openapi/models/TierDefaults.d.ts +66 -0
- package/dist/openapi/models/TierDefaults.js +49 -0
- package/dist/openapi/models/TierDefaultsByAudience.d.ts +73 -0
- package/dist/openapi/models/TierDefaultsByAudience.js +60 -0
- 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 +7 -28
- package/dist/openapi/models/UpdateProfile200ResponseData.js +1 -19
- 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 +3 -10
- package/dist/openapi/models/WorkflowArchiveResponse.js +1 -7
- 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 +3 -10
- package/dist/openapi/models/WorkflowRestoreResponse.js +1 -7
- 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/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 +17 -0
- package/openapi/api.yaml +703 -22
- package/operation-capabilities/operation-capabilities.json +1 -1
- package/operations/README.md +17 -0
- package/operations/schemas/compress.yaml +57 -3
- package/operations/schemas/render_variants.yaml +28 -3
- package/package.json +4 -2
package/openapi/api.yaml
CHANGED
|
@@ -89,15 +89,28 @@ info:
|
|
|
89
89
|
of truth instead of hardcoding magic numbers. A runtime
|
|
90
90
|
`GET /api/uploads/limits` endpoint for dynamic discovery
|
|
91
91
|
(per-tier / per-environment overrides) is a deferred follow-up.
|
|
92
|
-
version: 2.
|
|
92
|
+
version: 2.192.0
|
|
93
93
|
contact:
|
|
94
94
|
name: API Support
|
|
95
95
|
|
|
96
|
+
# The production host was ABSENT from this block entirely until 2026-08-11 —
|
|
97
|
+
# for EVERY endpoint, not just one. That was not merely untidy: prod's SSE
|
|
98
|
+
# consumer fell back to the wrong host precisely because the correct one lived
|
|
99
|
+
# only in deployment config, where nothing could catch the divergence. A host
|
|
100
|
+
# that exists only in an env var is a convention; a host declared here is a fact
|
|
101
|
+
# every generated client picks up.
|
|
102
|
+
#
|
|
103
|
+
# The staging/prod asymmetry is DELIBERATE and must not be "tidied": prod sets
|
|
104
|
+
# `environment_subdomain` to empty, so the domain base IS the root; staging sets
|
|
105
|
+
# it to `staging`, hence the extra label. Values resolved from terraform code by
|
|
106
|
+
# the terraform session, not from anyone's memory.
|
|
96
107
|
servers:
|
|
97
108
|
- url: http://localhost:8080
|
|
98
109
|
description: Local development
|
|
99
110
|
- url: https://api.staging.giveitsmaller.com
|
|
100
111
|
description: Staging environment
|
|
112
|
+
- url: https://api.giveitsmaller.com
|
|
113
|
+
description: Production environment
|
|
101
114
|
|
|
102
115
|
tags:
|
|
103
116
|
- name: Upload
|
|
@@ -1164,9 +1177,30 @@ paths:
|
|
|
1164
1177
|
NOT inline per-operation `result_metadata` or output details (avoids
|
|
1165
1178
|
N×M×K payload blow-up). Drill in via `GET /api/workflows/{id}/status`
|
|
1166
1179
|
(per-op detail incl. `result_metadata`) and
|
|
1167
|
-
`GET /api/workflows/{id}/downloads` (deliverables).
|
|
1168
|
-
|
|
1169
|
-
|
|
1180
|
+
`GET /api/workflows/{id}/downloads` (deliverables).
|
|
1181
|
+
|
|
1182
|
+
**Rows persist until GDPR purge — a workflow whose outputs have been
|
|
1183
|
+
retention-purged is STILL LISTED.** So a row appearing here does not
|
|
1184
|
+
imply its deliverables are still downloadable; read
|
|
1185
|
+
`retention_expires_at` on the downloads response for that.
|
|
1186
|
+
|
|
1187
|
+
⚠️ **This sentence used to say "whose 24h download window has expired".
|
|
1188
|
+
That figure was WRONG and was the only place in this spec it appeared.**
|
|
1189
|
+
The download-retention window is **per-tier — free 7 days / paid 30
|
|
1190
|
+
days / enterprise custom** — computed from the workflow's `created_at`
|
|
1191
|
+
and reported as `retention_expires_at` on
|
|
1192
|
+
`GET /api/workflows/{id}/downloads`
|
|
1193
|
+
([`G58ei6Z9`](https://trello.com/c/G58ei6Z9)). The stale clause almost
|
|
1194
|
+
certainly predates that field and nobody re-read it when the field
|
|
1195
|
+
landed.
|
|
1196
|
+
**It mattered because THREE clocks are involved and this was the one in
|
|
1197
|
+
the casually-read place:** `bundle.expires_at` is the short-lived
|
|
1198
|
+
pre-signed URL expiry (**access**), `retention_expires_at` is when the
|
|
1199
|
+
deliverables are removed (**data**), and the workflow's own
|
|
1200
|
+
`expires_at` is a record TTL on the paused path. **A download link
|
|
1201
|
+
expiring does not mean the object is gone** — a distinction this spec
|
|
1202
|
+
states correctly on `retention_expires_at` and used to contradict here.
|
|
1203
|
+
Per ticket [`nLK1IO1k`](https://trello.com/c/nLK1IO1k) (A1).
|
|
1170
1204
|
operationId: listWorkflows
|
|
1171
1205
|
security: [{bearerAuth: []}, {sessionAuth: []}] # required (explicit 401 — user-scoped list, no anonymous access)
|
|
1172
1206
|
x-identity-scoped: true # caller's own workflows — implicit identity-scoped, per ADR-0016 D3 (cf. credits/usage)
|
|
@@ -1195,7 +1229,21 @@ paths:
|
|
|
1195
1229
|
- name: archived
|
|
1196
1230
|
in: query
|
|
1197
1231
|
required: false
|
|
1198
|
-
|
|
1232
|
+
x-availability: planned
|
|
1233
|
+
description: |
|
|
1234
|
+
🔴 **NOT IMPLEMENTED — see the `planned` note below. A server
|
|
1235
|
+
that does not support this parameter SILENTLY IGNORES IT and
|
|
1236
|
+
returns the DEFAULT (non-archived) list.** That is the dangerous
|
|
1237
|
+
half of this feature and the reason it is called out here rather
|
|
1238
|
+
than only on the endpoints: `POST .../archive` would 404, which is
|
|
1239
|
+
loud and teaches the caller immediately, whereas
|
|
1240
|
+
**`archived=true` returns a 200 carrying the wrong rows.** A
|
|
1241
|
+
consumer asking for their archive receives their NON-archived
|
|
1242
|
+
workflows and is told nothing. **Silent wrong data beats a 404
|
|
1243
|
+
every time for damage.**
|
|
1244
|
+
Until the server implements it, a client MUST NOT present an
|
|
1245
|
+
"archived" view built on this parameter.
|
|
1246
|
+
|
|
1199
1247
|
Archived-row filter (ticket
|
|
1200
1248
|
[`j2s6T2qf`](https://trello.com/c/j2s6T2qf)). **Default `false`**:
|
|
1201
1249
|
archived workflows are EXCLUDED, so archiving declutters the
|
|
@@ -2720,6 +2768,29 @@ paths:
|
|
|
2720
2768
|
a **409** — cancel it first (`POST /api/workflows/{id}/cancel`) or wait
|
|
2721
2769
|
for it to finish. Archiving does NOT change the workflow's status; it
|
|
2722
2770
|
stays terminal and the response echoes it unchanged.
|
|
2771
|
+
# ⚠️ NO PUBLIC HTTP ROUTE EXISTS FOR THIS. Downgraded to `planned`
|
|
2772
|
+
# 2026-08-12 (yi4TDKVJ, raised by sdks + codex) on POSITIVE evidence, as
|
|
2773
|
+
# standing policy 3 requires — not on an absent attestation, which policy
|
|
2774
|
+
# 4 says is not enough:
|
|
2775
|
+
# * no `#[Route(...)]` matching archive/restore anywhere in
|
|
2776
|
+
# compression_api's `src/`;
|
|
2777
|
+
# * no `api/workflows/{id}/archive` or `/restore` path in `src/` or
|
|
2778
|
+
# `config/`;
|
|
2779
|
+
# * verified independently by sdks (named commit) and by codex reading
|
|
2780
|
+
# the list controller and its repository.
|
|
2781
|
+
#
|
|
2782
|
+
# ⚠️ CORRECTION TO THE RELAYED EVIDENCE, because it changes the ticket
|
|
2783
|
+
# rather than the verdict: the claim reaching this repo was that a grep
|
|
2784
|
+
# for `archiveWorkflow|/archive|archived` over `src` and `config`
|
|
2785
|
+
# "returns NO OUTPUT". IT DOES NOT — `ArchiveWorkflowCommand`,
|
|
2786
|
+
# `ArchiveWorkflowCommandHandler` and a `RestoreWorkflow` command all
|
|
2787
|
+
# EXIST, and there is an ADMIN CRUD controller that archives. So this is
|
|
2788
|
+
# **implemented in the application layer and not exposed on the public
|
|
2789
|
+
# API**, which is a different thing from "nothing behind it". The verdict
|
|
2790
|
+
# is unchanged — an unroutable capability is unreachable, so `planned` is
|
|
2791
|
+
# correct — but anyone scoping the work should know a handler already
|
|
2792
|
+
# exists.
|
|
2793
|
+
x-availability: planned
|
|
2723
2794
|
operationId: archiveWorkflow
|
|
2724
2795
|
security: [{bearerAuth: []}, {sessionAuth: []}] # required (explicit 401 in response set)
|
|
2725
2796
|
x-identity-scoped: true # workflow-ownership-scoped per ADR-0016 D3
|
|
@@ -2811,6 +2882,29 @@ paths:
|
|
|
2811
2882
|
`status` is the workflow's unchanged status (any `WorkflowStatus`
|
|
2812
2883
|
value), not a fixed terminal subset. There is no 409: un-archiving is
|
|
2813
2884
|
always safe.
|
|
2885
|
+
# ⚠️ NO PUBLIC HTTP ROUTE EXISTS FOR THIS. Downgraded to `planned`
|
|
2886
|
+
# 2026-08-12 (yi4TDKVJ, raised by sdks + codex) on POSITIVE evidence, as
|
|
2887
|
+
# standing policy 3 requires — not on an absent attestation, which policy
|
|
2888
|
+
# 4 says is not enough:
|
|
2889
|
+
# * no `#[Route(...)]` matching archive/restore anywhere in
|
|
2890
|
+
# compression_api's `src/`;
|
|
2891
|
+
# * no `api/workflows/{id}/archive` or `/restore` path in `src/` or
|
|
2892
|
+
# `config/`;
|
|
2893
|
+
# * verified independently by sdks (named commit) and by codex reading
|
|
2894
|
+
# the list controller and its repository.
|
|
2895
|
+
#
|
|
2896
|
+
# ⚠️ CORRECTION TO THE RELAYED EVIDENCE, because it changes the ticket
|
|
2897
|
+
# rather than the verdict: the claim reaching this repo was that a grep
|
|
2898
|
+
# for `archiveWorkflow|/archive|archived` over `src` and `config`
|
|
2899
|
+
# "returns NO OUTPUT". IT DOES NOT — `ArchiveWorkflowCommand`,
|
|
2900
|
+
# `ArchiveWorkflowCommandHandler` and a `RestoreWorkflow` command all
|
|
2901
|
+
# EXIST, and there is an ADMIN CRUD controller that archives. So this is
|
|
2902
|
+
# **implemented in the application layer and not exposed on the public
|
|
2903
|
+
# API**, which is a different thing from "nothing behind it". The verdict
|
|
2904
|
+
# is unchanged — an unroutable capability is unreachable, so `planned` is
|
|
2905
|
+
# correct — but anyone scoping the work should know a handler already
|
|
2906
|
+
# exists.
|
|
2907
|
+
x-availability: planned
|
|
2814
2908
|
operationId: restoreWorkflow
|
|
2815
2909
|
security: [{bearerAuth: []}, {sessionAuth: []}] # required (explicit 401 in response set)
|
|
2816
2910
|
x-identity-scoped: true # workflow-ownership-scoped per ADR-0016 D3
|
|
@@ -3996,6 +4090,402 @@ paths:
|
|
|
3996
4090
|
schema:
|
|
3997
4091
|
$ref: '#/components/schemas/ErrorEnvelope'
|
|
3998
4092
|
|
|
4093
|
+
/api/auth/account:
|
|
4094
|
+
delete:
|
|
4095
|
+
summary: Request deletion of the authenticated user's account
|
|
4096
|
+
# THE CONTRACT IS CATCHING UP TO SHIPPED BEHAVIOUR. Every status code,
|
|
4097
|
+
# error code and wire key below was read from the implementation
|
|
4098
|
+
# (AccountDeletionController + its feature tests), not designed here.
|
|
4099
|
+
#
|
|
4100
|
+
# ⚠️ WHAT HAPPENS TO STORED OUTPUTS IS DELIBERATELY NOT DECLARED. There
|
|
4101
|
+
# is a confirmed retention defect under a fleet-wide fix freeze, and a
|
|
4102
|
+
# deletion GUARANTEE is the one claim this repo must not lead the
|
|
4103
|
+
# implementation on: `planned` assumes the caller gets a refusal it can
|
|
4104
|
+
# see, and a retention gap refuses nothing. Declaring removal before
|
|
4105
|
+
# removal works would put a false claim on a privacy path. Tracked on
|
|
4106
|
+
# ticket [`NSIPubON`](https://trello.com/c/NSIPubON) as a USER decision,
|
|
4107
|
+
# alongside what happens to purchased credits.
|
|
4108
|
+
description: |
|
|
4109
|
+
Requests deletion of the caller's own account. **This is a request,
|
|
4110
|
+
not an immediate deletion** — it opens a **30-day grace period**
|
|
4111
|
+
during which `POST /api/auth/account/cancel-deletion` reverses it.
|
|
4112
|
+
|
|
4113
|
+
Re-verifies the caller's password: `current_password` is required.
|
|
4114
|
+
|
|
4115
|
+
**Deletion is REFUSED while the account has workflows in progress**
|
|
4116
|
+
(`409 WORKFLOWS_IN_PROGRESS`). A client must be prepared for that
|
|
4117
|
+
branch — it is not an error state the user can resolve by retrying
|
|
4118
|
+
immediately, and it is the answer to "what happens to my in-flight
|
|
4119
|
+
work": nothing, because the deletion does not start.
|
|
4120
|
+
|
|
4121
|
+
**Side effect a caller cannot otherwise discover:** a successful
|
|
4122
|
+
request **revokes the account's API keys immediately**, before the
|
|
4123
|
+
grace period elapses, and reports how many in `api_keys_revoked`.
|
|
4124
|
+
Cancelling the deletion does **not** restore them.
|
|
4125
|
+
|
|
4126
|
+
Hard deletion runs after grace expiry and is **not exposed to
|
|
4127
|
+
callers**; the terminal states surface as the `account_deleted` and
|
|
4128
|
+
`account_deletion_expired` error codes on subsequent requests.
|
|
4129
|
+
operationId: requestAccountDeletion
|
|
4130
|
+
security: [{bearerAuth: []}, {sessionAuth: []}] # required (authenticated principal)
|
|
4131
|
+
x-identity-scoped: true # identity-bound (caller's own account)
|
|
4132
|
+
tags:
|
|
4133
|
+
- Auth
|
|
4134
|
+
requestBody:
|
|
4135
|
+
required: true
|
|
4136
|
+
content:
|
|
4137
|
+
application/json:
|
|
4138
|
+
schema:
|
|
4139
|
+
type: object
|
|
4140
|
+
required:
|
|
4141
|
+
- current_password
|
|
4142
|
+
properties:
|
|
4143
|
+
current_password:
|
|
4144
|
+
type: string
|
|
4145
|
+
minLength: 1
|
|
4146
|
+
example:
|
|
4147
|
+
current_password: "s3cretpw"
|
|
4148
|
+
responses:
|
|
4149
|
+
'200':
|
|
4150
|
+
description: |
|
|
4151
|
+
Deletion requested; the 30-day grace period has started.
|
|
4152
|
+
content:
|
|
4153
|
+
application/json:
|
|
4154
|
+
schema:
|
|
4155
|
+
type: object
|
|
4156
|
+
additionalProperties: false
|
|
4157
|
+
required:
|
|
4158
|
+
- success
|
|
4159
|
+
- data
|
|
4160
|
+
properties:
|
|
4161
|
+
success:
|
|
4162
|
+
type: boolean
|
|
4163
|
+
enum: [true]
|
|
4164
|
+
data:
|
|
4165
|
+
type: object
|
|
4166
|
+
additionalProperties: false
|
|
4167
|
+
required:
|
|
4168
|
+
- message
|
|
4169
|
+
- api_keys_revoked
|
|
4170
|
+
properties:
|
|
4171
|
+
message:
|
|
4172
|
+
type: string
|
|
4173
|
+
description: Human-readable confirmation naming the grace period.
|
|
4174
|
+
api_keys_revoked:
|
|
4175
|
+
type: integer
|
|
4176
|
+
minimum: 0
|
|
4177
|
+
description: |
|
|
4178
|
+
How many of the account's API keys were revoked by
|
|
4179
|
+
this request. Revocation is **immediate** and is
|
|
4180
|
+
**not** undone by cancelling the deletion.
|
|
4181
|
+
example:
|
|
4182
|
+
success: true
|
|
4183
|
+
data:
|
|
4184
|
+
message: "Account deletion requested. You have 30 days to cancel."
|
|
4185
|
+
api_keys_revoked: 2
|
|
4186
|
+
'403':
|
|
4187
|
+
description: |
|
|
4188
|
+
The supplied `current_password` is incorrect
|
|
4189
|
+
(`error: INVALID_PASSWORD`, `error_type: invalid_password`).
|
|
4190
|
+
content:
|
|
4191
|
+
application/json:
|
|
4192
|
+
schema:
|
|
4193
|
+
$ref: '#/components/schemas/ErrorEnvelope'
|
|
4194
|
+
example:
|
|
4195
|
+
success: false
|
|
4196
|
+
error: "INVALID_PASSWORD"
|
|
4197
|
+
error_type: "invalid_password"
|
|
4198
|
+
message: "Current password is incorrect."
|
|
4199
|
+
'409':
|
|
4200
|
+
description: |
|
|
4201
|
+
Two distinct conflicts, discriminated by `error_type`:
|
|
4202
|
+
|
|
4203
|
+
- `already_requested` (`error: ALREADY_REQUESTED`) — a deletion
|
|
4204
|
+
request is already open for this account.
|
|
4205
|
+
- `workflows_in_progress` (`error: WORKFLOWS_IN_PROGRESS`) — the
|
|
4206
|
+
account has running workflows and deletion is refused until
|
|
4207
|
+
they reach a terminal state.
|
|
4208
|
+
content:
|
|
4209
|
+
application/json:
|
|
4210
|
+
schema:
|
|
4211
|
+
$ref: '#/components/schemas/ErrorEnvelope'
|
|
4212
|
+
example:
|
|
4213
|
+
success: false
|
|
4214
|
+
error: "WORKFLOWS_IN_PROGRESS"
|
|
4215
|
+
error_type: "workflows_in_progress"
|
|
4216
|
+
'401':
|
|
4217
|
+
description: No authenticated principal.
|
|
4218
|
+
content:
|
|
4219
|
+
application/json:
|
|
4220
|
+
schema:
|
|
4221
|
+
$ref: '#/components/schemas/ErrorEnvelope'
|
|
4222
|
+
example:
|
|
4223
|
+
success: false
|
|
4224
|
+
error: "AUTHENTICATION_REQUIRED"
|
|
4225
|
+
error_type: "authentication_required"
|
|
4226
|
+
message: "Authentication required."
|
|
4227
|
+
'404':
|
|
4228
|
+
description: |
|
|
4229
|
+
The authenticated principal no longer resolves to a stored user
|
|
4230
|
+
(`error: USER_NOT_FOUND`).
|
|
4231
|
+
content:
|
|
4232
|
+
application/json:
|
|
4233
|
+
schema:
|
|
4234
|
+
$ref: '#/components/schemas/ErrorEnvelope'
|
|
4235
|
+
example:
|
|
4236
|
+
success: false
|
|
4237
|
+
error: "USER_NOT_FOUND"
|
|
4238
|
+
'422':
|
|
4239
|
+
description: |
|
|
4240
|
+
Structured input validation failure — e.g. a blank
|
|
4241
|
+
`current_password`. `details[].field` carries the wire key
|
|
4242
|
+
`current_password`.
|
|
4243
|
+
content:
|
|
4244
|
+
application/json:
|
|
4245
|
+
schema:
|
|
4246
|
+
$ref: '#/components/schemas/ValidationErrorEnvelope'
|
|
4247
|
+
example:
|
|
4248
|
+
success: false
|
|
4249
|
+
error_type: validation_error
|
|
4250
|
+
error: "Validation failed"
|
|
4251
|
+
details:
|
|
4252
|
+
- field: "current_password"
|
|
4253
|
+
message: "Current password is required."
|
|
4254
|
+
'429':
|
|
4255
|
+
description: |
|
|
4256
|
+
Rate limit exceeded — the deletion request has its own per-user
|
|
4257
|
+
hourly limiter, separate from the cancel limiter. Carries a
|
|
4258
|
+
`Retry-After` response header.
|
|
4259
|
+
headers:
|
|
4260
|
+
Retry-After:
|
|
4261
|
+
description: Seconds to wait before retrying. Delta-seconds (RFC 9110).
|
|
4262
|
+
schema:
|
|
4263
|
+
type: integer
|
|
4264
|
+
minimum: 0
|
|
4265
|
+
example: 60
|
|
4266
|
+
content:
|
|
4267
|
+
application/json:
|
|
4268
|
+
schema:
|
|
4269
|
+
$ref: '#/components/schemas/ErrorEnvelope'
|
|
4270
|
+
|
|
4271
|
+
/api/auth/account/cancel-deletion:
|
|
4272
|
+
post:
|
|
4273
|
+
summary: Cancel a pending account-deletion request
|
|
4274
|
+
description: |
|
|
4275
|
+
Reverses a deletion request while the **30-day grace period** is
|
|
4276
|
+
still open. Takes no request body — the caller's identity is the
|
|
4277
|
+
whole input.
|
|
4278
|
+
|
|
4279
|
+
**`410 Gone` is the expiry signal** and is the only way a client
|
|
4280
|
+
learns the grace period has run out. Distinguish it from `409`: a
|
|
4281
|
+
`409` means there was never a request to cancel, a `410` means there
|
|
4282
|
+
was one and it is too late.
|
|
4283
|
+
|
|
4284
|
+
**API keys revoked by the deletion request are NOT restored.**
|
|
4285
|
+
operationId: cancelAccountDeletion
|
|
4286
|
+
security: [{bearerAuth: []}, {sessionAuth: []}] # required (authenticated principal)
|
|
4287
|
+
x-identity-scoped: true # identity-bound (caller's own account)
|
|
4288
|
+
tags:
|
|
4289
|
+
- Auth
|
|
4290
|
+
responses:
|
|
4291
|
+
'200':
|
|
4292
|
+
description: The pending deletion request was cancelled.
|
|
4293
|
+
content:
|
|
4294
|
+
application/json:
|
|
4295
|
+
schema:
|
|
4296
|
+
type: object
|
|
4297
|
+
additionalProperties: false
|
|
4298
|
+
required:
|
|
4299
|
+
- success
|
|
4300
|
+
- data
|
|
4301
|
+
properties:
|
|
4302
|
+
success:
|
|
4303
|
+
type: boolean
|
|
4304
|
+
enum: [true]
|
|
4305
|
+
data:
|
|
4306
|
+
type: object
|
|
4307
|
+
additionalProperties: false
|
|
4308
|
+
required:
|
|
4309
|
+
- message
|
|
4310
|
+
properties:
|
|
4311
|
+
message:
|
|
4312
|
+
type: string
|
|
4313
|
+
example:
|
|
4314
|
+
success: true
|
|
4315
|
+
data:
|
|
4316
|
+
message: "Account deletion has been cancelled."
|
|
4317
|
+
'409':
|
|
4318
|
+
description: |
|
|
4319
|
+
No deletion request is open for this account
|
|
4320
|
+
(`error: NO_DELETION_REQUEST`, `error_type: no_deletion_request`).
|
|
4321
|
+
content:
|
|
4322
|
+
application/json:
|
|
4323
|
+
schema:
|
|
4324
|
+
$ref: '#/components/schemas/ErrorEnvelope'
|
|
4325
|
+
example:
|
|
4326
|
+
success: false
|
|
4327
|
+
error: "NO_DELETION_REQUEST"
|
|
4328
|
+
error_type: "no_deletion_request"
|
|
4329
|
+
'410':
|
|
4330
|
+
description: |
|
|
4331
|
+
The 30-day grace period has expired and the deletion can no
|
|
4332
|
+
longer be cancelled (`error: GRACE_PERIOD_EXPIRED`,
|
|
4333
|
+
`error_type: grace_period_expired`). **This is the expiry
|
|
4334
|
+
signal** — see also the `account_deletion_expired` error code.
|
|
4335
|
+
content:
|
|
4336
|
+
application/json:
|
|
4337
|
+
schema:
|
|
4338
|
+
$ref: '#/components/schemas/ErrorEnvelope'
|
|
4339
|
+
example:
|
|
4340
|
+
success: false
|
|
4341
|
+
error: "GRACE_PERIOD_EXPIRED"
|
|
4342
|
+
error_type: "grace_period_expired"
|
|
4343
|
+
'401':
|
|
4344
|
+
description: No authenticated principal.
|
|
4345
|
+
content:
|
|
4346
|
+
application/json:
|
|
4347
|
+
schema:
|
|
4348
|
+
$ref: '#/components/schemas/ErrorEnvelope'
|
|
4349
|
+
example:
|
|
4350
|
+
success: false
|
|
4351
|
+
error: "AUTHENTICATION_REQUIRED"
|
|
4352
|
+
error_type: "authentication_required"
|
|
4353
|
+
message: "Authentication required."
|
|
4354
|
+
'404':
|
|
4355
|
+
description: |
|
|
4356
|
+
The authenticated principal no longer resolves to a stored user
|
|
4357
|
+
(`error: USER_NOT_FOUND`).
|
|
4358
|
+
content:
|
|
4359
|
+
application/json:
|
|
4360
|
+
schema:
|
|
4361
|
+
$ref: '#/components/schemas/ErrorEnvelope'
|
|
4362
|
+
example:
|
|
4363
|
+
success: false
|
|
4364
|
+
error: "USER_NOT_FOUND"
|
|
4365
|
+
'429':
|
|
4366
|
+
description: |
|
|
4367
|
+
Rate limit exceeded — the cancel path has its own per-user hourly
|
|
4368
|
+
limiter, separate from the deletion-request limiter. Carries a
|
|
4369
|
+
`Retry-After` response header.
|
|
4370
|
+
headers:
|
|
4371
|
+
Retry-After:
|
|
4372
|
+
description: Seconds to wait before retrying. Delta-seconds (RFC 9110).
|
|
4373
|
+
schema:
|
|
4374
|
+
type: integer
|
|
4375
|
+
minimum: 0
|
|
4376
|
+
example: 60
|
|
4377
|
+
content:
|
|
4378
|
+
application/json:
|
|
4379
|
+
schema:
|
|
4380
|
+
$ref: '#/components/schemas/ErrorEnvelope'
|
|
4381
|
+
|
|
4382
|
+
/api/auth/account/export:
|
|
4383
|
+
get:
|
|
4384
|
+
summary: Export the authenticated user's data (GDPR)
|
|
4385
|
+
description: |
|
|
4386
|
+
Returns the account's stored data as JSON: `profile`, `uploads`,
|
|
4387
|
+
`workflows`, `api_keys` and `billing`, plus an `exported_at`
|
|
4388
|
+
timestamp.
|
|
4389
|
+
|
|
4390
|
+
**The response carries the account's full PII**, so the server sets
|
|
4391
|
+
`Cache-Control: no-store` — **not** merely `no-cache`. A client MUST
|
|
4392
|
+
NOT write this payload to shared or persistent storage.
|
|
4393
|
+
|
|
4394
|
+
Independent of the deletion flow: exporting neither starts nor
|
|
4395
|
+
cancels a deletion.
|
|
4396
|
+
operationId: exportAccountData
|
|
4397
|
+
security: [{bearerAuth: []}, {sessionAuth: []}] # required (authenticated principal)
|
|
4398
|
+
x-identity-scoped: true # identity-bound (caller's own data)
|
|
4399
|
+
tags:
|
|
4400
|
+
- Auth
|
|
4401
|
+
responses:
|
|
4402
|
+
'200':
|
|
4403
|
+
description: |
|
|
4404
|
+
The account's exported data. The per-section payload shapes are
|
|
4405
|
+
**deliberately not pinned here** — they are a data dump for the
|
|
4406
|
+
account holder, not an integration surface, and pinning them
|
|
4407
|
+
would freeze internal record shapes into this contract.
|
|
4408
|
+
headers:
|
|
4409
|
+
Cache-Control:
|
|
4410
|
+
description: Always `no-store` — the payload carries full PII.
|
|
4411
|
+
schema:
|
|
4412
|
+
type: string
|
|
4413
|
+
example: "no-store"
|
|
4414
|
+
content:
|
|
4415
|
+
application/json:
|
|
4416
|
+
schema:
|
|
4417
|
+
type: object
|
|
4418
|
+
additionalProperties: false
|
|
4419
|
+
required:
|
|
4420
|
+
- success
|
|
4421
|
+
- data
|
|
4422
|
+
properties:
|
|
4423
|
+
success:
|
|
4424
|
+
type: boolean
|
|
4425
|
+
enum: [true]
|
|
4426
|
+
data:
|
|
4427
|
+
type: object
|
|
4428
|
+
required:
|
|
4429
|
+
- exported_at
|
|
4430
|
+
- profile
|
|
4431
|
+
properties:
|
|
4432
|
+
exported_at:
|
|
4433
|
+
type: string
|
|
4434
|
+
format: date-time
|
|
4435
|
+
profile:
|
|
4436
|
+
type: object
|
|
4437
|
+
uploads:
|
|
4438
|
+
type: array
|
|
4439
|
+
items:
|
|
4440
|
+
type: object
|
|
4441
|
+
workflows:
|
|
4442
|
+
type: array
|
|
4443
|
+
items:
|
|
4444
|
+
type: object
|
|
4445
|
+
api_keys:
|
|
4446
|
+
type: array
|
|
4447
|
+
items:
|
|
4448
|
+
type: object
|
|
4449
|
+
billing:
|
|
4450
|
+
type: object
|
|
4451
|
+
'401':
|
|
4452
|
+
description: No authenticated principal.
|
|
4453
|
+
content:
|
|
4454
|
+
application/json:
|
|
4455
|
+
schema:
|
|
4456
|
+
$ref: '#/components/schemas/ErrorEnvelope'
|
|
4457
|
+
example:
|
|
4458
|
+
success: false
|
|
4459
|
+
error: "AUTHENTICATION_REQUIRED"
|
|
4460
|
+
error_type: "authentication_required"
|
|
4461
|
+
message: "Authentication required."
|
|
4462
|
+
'404':
|
|
4463
|
+
description: |
|
|
4464
|
+
The authenticated principal no longer resolves to a stored user
|
|
4465
|
+
(`error: USER_NOT_FOUND`).
|
|
4466
|
+
content:
|
|
4467
|
+
application/json:
|
|
4468
|
+
schema:
|
|
4469
|
+
$ref: '#/components/schemas/ErrorEnvelope'
|
|
4470
|
+
example:
|
|
4471
|
+
success: false
|
|
4472
|
+
error: "USER_NOT_FOUND"
|
|
4473
|
+
'429':
|
|
4474
|
+
description: |
|
|
4475
|
+
Data-export rate limit reached. Carries a `Retry-After` response
|
|
4476
|
+
header.
|
|
4477
|
+
headers:
|
|
4478
|
+
Retry-After:
|
|
4479
|
+
description: Seconds to wait before retrying. Delta-seconds (RFC 9110).
|
|
4480
|
+
schema:
|
|
4481
|
+
type: integer
|
|
4482
|
+
minimum: 0
|
|
4483
|
+
example: 60
|
|
4484
|
+
content:
|
|
4485
|
+
application/json:
|
|
4486
|
+
schema:
|
|
4487
|
+
$ref: '#/components/schemas/ErrorEnvelope'
|
|
4488
|
+
|
|
3999
4489
|
/api/auth/confirm-email-change:
|
|
4000
4490
|
post:
|
|
4001
4491
|
summary: Confirm a pending email-address change
|
|
@@ -4437,13 +4927,10 @@ paths:
|
|
|
4437
4927
|
properties:
|
|
4438
4928
|
updated:
|
|
4439
4929
|
type: boolean
|
|
4440
|
-
enum: [true]
|
|
4441
4930
|
name_changed:
|
|
4442
4931
|
type: boolean
|
|
4443
|
-
enum: [true]
|
|
4444
4932
|
email_change_requested:
|
|
4445
4933
|
type: boolean
|
|
4446
|
-
enum: [true]
|
|
4447
4934
|
message:
|
|
4448
4935
|
type: string
|
|
4449
4936
|
example:
|
|
@@ -5185,6 +5672,18 @@ paths:
|
|
|
5185
5672
|
operationId: createBillingCheckoutSession
|
|
5186
5673
|
security: [{bearerAuth: []}, {sessionAuth: []}] # required (IS_AUTHENTICATED_FULLY; anonymous/partial sessions → 401)
|
|
5187
5674
|
x-identity-scoped: true # the checkout session is created for the authenticated caller
|
|
5675
|
+
# DOWNGRADE, and it clears standing policies 3 and 4 by MEASUREMENT
|
|
5676
|
+
# rather than by absence of evidence: e2e drove this endpoint on staging
|
|
5677
|
+
# 2026-08-11 and got 422 `feature_not_available` with
|
|
5678
|
+
# `availability: planned`, WITH CONTROLS — unauthenticated gives 401 and
|
|
5679
|
+
# GET gives 405, so the 422 is the feature gate and not a bad payload or
|
|
5680
|
+
# a missing route. api confirmed `STRIPE_CHECKOUT_ENABLED=false` and five
|
|
5681
|
+
# empty price IDs on the live task definition.
|
|
5682
|
+
#
|
|
5683
|
+
# Flipping this back to `stable` is an UPGRADE and is covered by the
|
|
5684
|
+
# standing freeze (hub, 2026-08-11): no availability upgrade to `stable`
|
|
5685
|
+
# before launch without an explicit per-flip ruling.
|
|
5686
|
+
x-availability: planned
|
|
5188
5687
|
tags:
|
|
5189
5688
|
- Billing
|
|
5190
5689
|
requestBody:
|
|
@@ -6751,6 +7250,138 @@ components:
|
|
|
6751
7250
|
$ref: '#/components/schemas/AccountLimitEntry'
|
|
6752
7251
|
max_total_input_size_bytes:
|
|
6753
7252
|
$ref: '#/components/schemas/AccountLimitEntry'
|
|
7253
|
+
max_duration_seconds:
|
|
7254
|
+
# OPTIONAL in this expand step; NOT in `required` above until
|
|
7255
|
+
# api emits it. Unit is SECONDS — carried by the key name, per
|
|
7256
|
+
# AccountLimitEntry.
|
|
7257
|
+
$ref: '#/components/schemas/AccountLimitEntry'
|
|
7258
|
+
|
|
7259
|
+
MediaCategory:
|
|
7260
|
+
type: string
|
|
7261
|
+
enum: [image, video, audio, document]
|
|
7262
|
+
description: |
|
|
7263
|
+
Coarse input media family, as used by the tier-default surface.
|
|
7264
|
+
**Not** a MIME type and **not** an operation `mime_group` — those are
|
|
7265
|
+
finer-grained and live in the operation schemas. This vocabulary
|
|
7266
|
+
exists so a client can filter a file picker without enumerating MIMEs.
|
|
7267
|
+
|
|
7268
|
+
TierDefaults:
|
|
7269
|
+
type: object
|
|
7270
|
+
additionalProperties: false
|
|
7271
|
+
description: |
|
|
7272
|
+
The **published default limits**, readable by an ANONYMOUS caller.
|
|
7273
|
+
|
|
7274
|
+
**Why this exists separately from `GET /api/v2/account/limits`:** that
|
|
7275
|
+
endpoint is per-account and override-aware, so it requires auth and
|
|
7276
|
+
returns `401` to an anonymous caller — **correctly**, because
|
|
7277
|
+
`effective` / `tier_default` / `overridden` is meaningless without an
|
|
7278
|
+
account. What a logged-out visitor needs is the **tier defaults**,
|
|
7279
|
+
which are not per-account. This publishes AS DATA what the `UserTier`
|
|
7280
|
+
description already publishes as prose.
|
|
7281
|
+
|
|
7282
|
+
**The server is authoritative for the values.** This contract declares
|
|
7283
|
+
the SHAPE; the numbers are computed per environment and per tier
|
|
7284
|
+
model, and a client MUST read them here rather than hard-coding a
|
|
7285
|
+
table (the drift this field exists to end).
|
|
7286
|
+
required:
|
|
7287
|
+
- media_categories
|
|
7288
|
+
- by_audience
|
|
7289
|
+
properties:
|
|
7290
|
+
media_categories:
|
|
7291
|
+
type: array
|
|
7292
|
+
minItems: 1
|
|
7293
|
+
uniqueItems: true
|
|
7294
|
+
items:
|
|
7295
|
+
$ref: '#/components/schemas/MediaCategory'
|
|
7296
|
+
description: |
|
|
7297
|
+
The input media families available **to every audience,
|
|
7298
|
+
including anonymous**. Declared ONCE, not per-tier, because it
|
|
7299
|
+
does not vary — hub decision 25 made audio universal, and there
|
|
7300
|
+
is now no tier boundary at which the category axis changes.
|
|
7301
|
+
|
|
7302
|
+
⚠️ **Deliberately NOT a per-audience allow-list.** A structure
|
|
7303
|
+
with one row per tier, every row identical, is a gate whose every
|
|
7304
|
+
row is open — it reads as an entitlement mechanism while
|
|
7305
|
+
encoding no entitlement, and the next reader maintains it as
|
|
7306
|
+
though it did. If a future tier DOES restrict categories, this
|
|
7307
|
+
field moves into `by_audience` in a deliberate change, and that
|
|
7308
|
+
change is where the restriction gets argued.
|
|
7309
|
+
by_audience:
|
|
7310
|
+
type: object
|
|
7311
|
+
additionalProperties: false
|
|
7312
|
+
description: |
|
|
7313
|
+
The limits that genuinely DO vary, keyed by audience. Contains
|
|
7314
|
+
only axes with real variance; an axis that is uniform belongs
|
|
7315
|
+
beside `media_categories`, not here.
|
|
7316
|
+
|
|
7317
|
+
**`anonymous` is a key here but deliberately NOT a `UserTier`
|
|
7318
|
+
value.** `UserTier` is a subscription tier and anonymous is the
|
|
7319
|
+
ABSENCE of one — putting it in that enum would place a
|
|
7320
|
+
non-subscription value inside the ordering that drives upgrade
|
|
7321
|
+
prompts (`free < pro < max < enterprise`), where it has no
|
|
7322
|
+
position.
|
|
7323
|
+
⚠️ **And keeping them distinct is not pedantry — the conflation
|
|
7324
|
+
has already shipped once.** This endpoint's `user_tier`
|
|
7325
|
+
description used to say anonymous callers "receive the `free`
|
|
7326
|
+
tier baseline view", which became false the moment the two were
|
|
7327
|
+
allowed to differ. **A vocabulary that cannot express the
|
|
7328
|
+
difference invites prose asserting they are the same.**
|
|
7329
|
+
required:
|
|
7330
|
+
- anonymous
|
|
7331
|
+
- free
|
|
7332
|
+
- pro
|
|
7333
|
+
- max
|
|
7334
|
+
- enterprise
|
|
7335
|
+
properties:
|
|
7336
|
+
anonymous:
|
|
7337
|
+
$ref: '#/components/schemas/TierDefaultLimits'
|
|
7338
|
+
free:
|
|
7339
|
+
$ref: '#/components/schemas/TierDefaultLimits'
|
|
7340
|
+
pro:
|
|
7341
|
+
$ref: '#/components/schemas/TierDefaultLimits'
|
|
7342
|
+
max:
|
|
7343
|
+
$ref: '#/components/schemas/TierDefaultLimits'
|
|
7344
|
+
enterprise:
|
|
7345
|
+
$ref: '#/components/schemas/TierDefaultLimits'
|
|
7346
|
+
|
|
7347
|
+
TierDefaultLimits:
|
|
7348
|
+
type: object
|
|
7349
|
+
additionalProperties: false
|
|
7350
|
+
description: |
|
|
7351
|
+
One audience's default limits. **Defaults, not entitlements** — a
|
|
7352
|
+
specific account may carry an override, which only
|
|
7353
|
+
`GET /api/v2/account/limits` can report.
|
|
7354
|
+
required:
|
|
7355
|
+
- max_upload_size_bytes
|
|
7356
|
+
- max_duration_seconds
|
|
7357
|
+
properties:
|
|
7358
|
+
max_upload_size_bytes:
|
|
7359
|
+
type: integer
|
|
7360
|
+
format: int64
|
|
7361
|
+
minimum: 1
|
|
7362
|
+
description: |
|
|
7363
|
+
Per-FILE upload cap. Same axis as
|
|
7364
|
+
`AccountLimits.limits.max_upload_size_bytes`.
|
|
7365
|
+
|
|
7366
|
+
⚠️ **A client MUST NOT treat this as the only size bound.** The
|
|
7367
|
+
per-operation processing ceilings (`max_input_size_bytes` in the
|
|
7368
|
+
operation schemas) are a **different axis and a different
|
|
7369
|
+
number**, and can be SMALLER than this cap — an upload that
|
|
7370
|
+
succeeds may still be rejected at operation time. A picker that
|
|
7371
|
+
shows one number without the other will let a user pick a file
|
|
7372
|
+
the product cannot process.
|
|
7373
|
+
max_duration_seconds:
|
|
7374
|
+
type: [integer, "null"]
|
|
7375
|
+
minimum: 0
|
|
7376
|
+
description: |
|
|
7377
|
+
Per-upload duration cap for time-based media. `null` where the
|
|
7378
|
+
audience has no duration cap.
|
|
7379
|
+
|
|
7380
|
+
⚠️ **DISTINCT from `processing_class.short_form.max_input_duration`
|
|
7381
|
+
(`PT5M`) in the operation schemas, which it may numerically
|
|
7382
|
+
equal.** That is the short-form/long-form PROCESSING boundary and
|
|
7383
|
+
applies to every audience; this is an entitlement. Two concepts,
|
|
7384
|
+
one integer — read this one for entitlement.
|
|
6754
7385
|
|
|
6755
7386
|
AccountLimitEntry:
|
|
6756
7387
|
type: object
|
|
@@ -6769,14 +7400,16 @@ components:
|
|
|
6769
7400
|
type: integer
|
|
6770
7401
|
minimum: 1
|
|
6771
7402
|
description: |
|
|
6772
|
-
The cap in force for this account
|
|
6773
|
-
|
|
7403
|
+
The cap in force for this account (`override ?? tier_default`),
|
|
7404
|
+
**in this limit's own unit** — bytes for the `*_bytes` keys,
|
|
7405
|
+
seconds for the `*_seconds` keys. **The unit is carried by the
|
|
7406
|
+
key name, not by this field.**
|
|
6774
7407
|
tier_default:
|
|
6775
7408
|
type: integer
|
|
6776
7409
|
minimum: 1
|
|
6777
7410
|
description: |
|
|
6778
|
-
The tier's default cap for this limit, in
|
|
6779
|
-
via the tier model).
|
|
7411
|
+
The tier's default cap for this limit, in the same unit as
|
|
7412
|
+
`effective` (already public via the tier model).
|
|
6780
7413
|
overridden:
|
|
6781
7414
|
type: boolean
|
|
6782
7415
|
description: |
|
|
@@ -7312,7 +7945,6 @@ components:
|
|
|
7312
7945
|
workflow is a 409, never a 200.
|
|
7313
7946
|
archived:
|
|
7314
7947
|
type: boolean
|
|
7315
|
-
enum: [true]
|
|
7316
7948
|
description: Always `true` on a 200 — the workflow is archived.
|
|
7317
7949
|
archived_at:
|
|
7318
7950
|
type: string
|
|
@@ -7354,7 +7986,6 @@ components:
|
|
|
7354
7986
|
$ref: '#/components/schemas/WorkflowStatus'
|
|
7355
7987
|
archived:
|
|
7356
7988
|
type: boolean
|
|
7357
|
-
enum: [false]
|
|
7358
7989
|
description: |
|
|
7359
7990
|
Always `false` on a 200 — the workflow is no longer archived
|
|
7360
7991
|
(or was never archived; restore is an idempotent no-op there).
|
|
@@ -11468,11 +12099,50 @@ components:
|
|
|
11468
12099
|
|
|
11469
12100
|
CodegenUploadPlaceholder:
|
|
11470
12101
|
type: object
|
|
12102
|
+
# ⚠️ THIS DESCRIPTION USED TO SAY "the original upload is
|
|
12103
|
+
# consumed/expired". THAT WAS FALSE, and it contradicted this contract's
|
|
12104
|
+
# own schema: `UploadSource` accepts `{type: upload, file_id}` at
|
|
12105
|
+
# workflow-create, so a client reading the schema builds file reuse while
|
|
12106
|
+
# a client reading this sentence concludes it cannot work. Both shipped,
|
|
12107
|
+
# in the same published artefact.
|
|
12108
|
+
#
|
|
12109
|
+
# Corrected 2026-08-12 from api's code read: NOTHING marks an upload
|
|
12110
|
+
# consumed — no column, no flag, no state — nothing deletes it when a
|
|
12111
|
+
# workflow completes, and the `uploads` row is independent of workflow
|
|
12112
|
+
# lifecycle. An upload is REUSABLE.
|
|
12113
|
+
#
|
|
12114
|
+
# ⚠️ THE UPLOAD LIFETIME IS STILL UNDECLARED AND IS DELIBERATELY NOT
|
|
12115
|
+
# INVENTED HERE. The only true sense in which an upload "expires" is the
|
|
12116
|
+
# stored bytes ageing out of the input bucket, which is a storage
|
|
12117
|
+
# lifecycle and not currently a contract concept at all. That number is
|
|
12118
|
+
# terraform's measurement; it has been relayed to this session as 3 days
|
|
12119
|
+
# and NEITHER api NOR this session has verified it, so it is not written
|
|
12120
|
+
# into the contract. Asked of terraform 2026-08-12; lands as a follow-up
|
|
12121
|
+
# if and only if they confirm it AND confirm staging and prod agree —
|
|
12122
|
+
# this contract has no environment axis, so a lifetime true in one
|
|
12123
|
+
# environment and false in the other cannot be expressed honestly.
|
|
11471
12124
|
description: |
|
|
11472
12125
|
Stand-in for a user UPLOAD source in a replay projection — descriptive
|
|
11473
|
-
metadata so a consumer can re-prompt for an equivalent file.
|
|
11474
|
-
bytes or storage key
|
|
11475
|
-
|
|
12126
|
+
metadata so a consumer can re-prompt for an equivalent file. Carries
|
|
12127
|
+
NOT the bytes or the storage key, only the descriptive fields below.
|
|
12128
|
+
|
|
12129
|
+
**This placeholder is about what the PROJECTION carries, not about
|
|
12130
|
+
whether the upload still exists.** An upload is **not** consumed by
|
|
12131
|
+
being used: nothing marks it spent, and referencing the same `file_id`
|
|
12132
|
+
again at `POST /api/workflows` via `UploadSource` is valid — that is
|
|
12133
|
+
how a caller re-runs a file with different settings, or runs a
|
|
12134
|
+
different operation on it.
|
|
12135
|
+
|
|
12136
|
+
The projection omits the `file_id` because a replay snippet is meant to
|
|
12137
|
+
be re-runnable by **any** reader, including one who never held that
|
|
12138
|
+
upload; it is a code sample, not a resume token.
|
|
12139
|
+
|
|
12140
|
+
⚠️ **How long an upload remains referenceable is NOT declared by this
|
|
12141
|
+
contract.** The stored bytes are subject to an input-bucket retention
|
|
12142
|
+
lifecycle that this spec does not state, so a caller MUST be prepared
|
|
12143
|
+
for a `file_id` that was valid to stop being usable, and MUST NOT infer
|
|
12144
|
+
a lifetime from the workflow `expires_at` TTL — **those are different
|
|
12145
|
+
clocks on different objects, and the workflow one is longer.**
|
|
11476
12146
|
required:
|
|
11477
12147
|
- kind
|
|
11478
12148
|
properties:
|
|
@@ -12849,12 +13519,25 @@ components:
|
|
|
12849
13519
|
- type: string
|
|
12850
13520
|
- type: 'null'
|
|
12851
13521
|
example: "production"
|
|
13522
|
+
tier_defaults:
|
|
13523
|
+
# Anonymous-readable. Declared here rather than on
|
|
13524
|
+
# /api/v2/account/limits because that surface is per-account and
|
|
13525
|
+
# override-aware, so it 401s an anonymous caller — correctly.
|
|
13526
|
+
$ref: '#/components/schemas/TierDefaults'
|
|
12852
13527
|
user_tier:
|
|
12853
13528
|
description: |
|
|
12854
13529
|
Tier of the calling user. Anonymous (unauthenticated) callers
|
|
12855
|
-
see `null` on the wire
|
|
12856
|
-
|
|
12857
|
-
|
|
13530
|
+
see `null` on the wire. Used by clients to render upgrade
|
|
13531
|
+
prompts on tier-gated features.
|
|
13532
|
+
|
|
13533
|
+
⚠️ **`null` does NOT mean "the free tier".** This description
|
|
13534
|
+
previously said anonymous callers "receive the `free` tier
|
|
13535
|
+
baseline view"; that stopped being true when the anonymous and
|
|
13536
|
+
free limits were allowed to differ (hub decisions 22 + 25 —
|
|
13537
|
+
anonymous carries a shorter duration entitlement than a
|
|
13538
|
+
signed-in free user). **Anonymous is the ABSENCE of a tier, not
|
|
13539
|
+
the lowest one.** Read `tier_defaults.by_audience.anonymous`
|
|
13540
|
+
for what an unauthenticated caller may actually do.
|
|
12858
13541
|
oneOf:
|
|
12859
13542
|
- $ref: '#/components/schemas/UserTier'
|
|
12860
13543
|
- type: 'null'
|
|
@@ -13120,7 +13803,6 @@ components:
|
|
|
13120
13803
|
properties:
|
|
13121
13804
|
same_as_input:
|
|
13122
13805
|
type: boolean
|
|
13123
|
-
enum: [true]
|
|
13124
13806
|
- type: object
|
|
13125
13807
|
additionalProperties: false
|
|
13126
13808
|
required: [from_option]
|
|
@@ -13249,7 +13931,6 @@ components:
|
|
|
13249
13931
|
description: Field token under test.
|
|
13250
13932
|
isSet:
|
|
13251
13933
|
type: boolean
|
|
13252
|
-
enum: [true]
|
|
13253
13934
|
description: |
|
|
13254
13935
|
Leaf test — asserts `field` is present/set. Only the
|
|
13255
13936
|
positive form is used; negate via a wrapping `not` node.
|