@giveitsmaller/contracts 0.65.0 → 0.68.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 +17 -3
- package/accepted-options/image-output-routes.json +1 -1
- package/availability/availability.json +97 -11
- package/code-builder/code-builder-metadata.json +120 -11
- package/dist/openapi/models/AccountLimitEntry.d.ts +1 -1
- package/dist/openapi/models/AccountLimitEntry.js +1 -1
- package/dist/openapi/models/AccountLimits.d.ts +15 -7
- package/dist/openapi/models/AccountLimits.js +1 -1
- package/dist/openapi/models/AccountLimitsLimits.d.ts +1 -1
- package/dist/openapi/models/AccountLimitsLimits.js +1 -1
- package/dist/openapi/models/AccountLimitsSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/AccountLimitsSuccessEnvelope.js +1 -1
- package/dist/openapi/models/AudioWatermarkDecodeRequest.d.ts +1 -1
- package/dist/openapi/models/AudioWatermarkDecodeRequest.js +1 -1
- package/dist/openapi/models/AudioWatermarkDecodeResponse.d.ts +1 -1
- package/dist/openapi/models/AudioWatermarkDecodeResponse.js +1 -1
- package/dist/openapi/models/AuthErrorResponse.d.ts +1 -1
- package/dist/openapi/models/AuthErrorResponse.js +1 -1
- package/dist/openapi/models/AuthErrorType.d.ts +1 -1
- package/dist/openapi/models/AuthErrorType.js +1 -1
- package/dist/openapi/models/AuthRejectionEnvelope.d.ts +1 -1
- package/dist/openapi/models/AuthRejectionEnvelope.js +1 -1
- package/dist/openapi/models/{TierDefaultsByAudience.d.ts → AuthenticatedIdentity.d.ts} +56 -40
- package/dist/openapi/models/{TierDefaultsByAudience.js → AuthenticatedIdentity.js} +31 -25
- 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/CodegenSource.d.ts +1 -1
- package/dist/openapi/models/CodegenSource.js +1 -1
- package/dist/openapi/models/CodegenSourceInput.d.ts +1 -1
- package/dist/openapi/models/CodegenSourceInput.js +1 -1
- package/dist/openapi/models/CodegenSourceJob.d.ts +1 -1
- package/dist/openapi/models/CodegenSourceJob.js +1 -1
- package/dist/openapi/models/CodegenSourceJobSource.d.ts +1 -1
- package/dist/openapi/models/CodegenSourceJobSource.js +1 -1
- package/dist/openapi/models/CodegenSourceOperation.d.ts +1 -1
- package/dist/openapi/models/CodegenSourceOperation.js +1 -1
- package/dist/openapi/models/CodegenUploadPlaceholder.d.ts +1 -1
- package/dist/openapi/models/CodegenUploadPlaceholder.js +1 -1
- package/dist/openapi/models/CompositionPlan.d.ts +1 -1
- package/dist/openapi/models/CompositionPlan.js +1 -1
- package/dist/openapi/models/CompositionPlanJob.d.ts +1 -1
- package/dist/openapi/models/CompositionPlanJob.js +1 -1
- package/dist/openapi/models/CompositionPlanOperation.d.ts +1 -1
- package/dist/openapi/models/CompositionPlanOperation.js +1 -1
- package/dist/openapi/models/ConfirmEmailChange200Response.d.ts +1 -1
- package/dist/openapi/models/ConfirmEmailChange200Response.js +1 -1
- package/dist/openapi/models/ConfirmEmailChange200ResponseData.d.ts +1 -1
- package/dist/openapi/models/ConfirmEmailChange200ResponseData.js +1 -1
- package/dist/openapi/models/ConfirmEmailChangeRequest.d.ts +1 -1
- package/dist/openapi/models/ConfirmEmailChangeRequest.js +1 -1
- package/dist/openapi/models/ConnectionSource.d.ts +1 -1
- package/dist/openapi/models/ConnectionSource.js +1 -1
- package/dist/openapi/models/ContactRequest.d.ts +1 -1
- package/dist/openapi/models/ContactRequest.js +1 -1
- package/dist/openapi/models/ContactSubject.d.ts +1 -1
- package/dist/openapi/models/ContactSubject.js +1 -1
- package/dist/openapi/models/ContactValidationErrorResponse.d.ts +1 -1
- package/dist/openapi/models/ContactValidationErrorResponse.js +1 -1
- package/dist/openapi/models/CreateApiKey201Response.d.ts +1 -1
- package/dist/openapi/models/CreateApiKey201Response.js +1 -1
- package/dist/openapi/models/CreateApiKey201ResponseData.d.ts +1 -1
- package/dist/openapi/models/CreateApiKey201ResponseData.js +1 -1
- package/dist/openapi/models/CreateApiKeyRequest.d.ts +1 -1
- package/dist/openapi/models/CreateApiKeyRequest.js +1 -1
- package/dist/openapi/models/CreateBillingCheckoutSession422Response.d.ts +1 -1
- package/dist/openapi/models/CreateBillingCheckoutSession422Response.js +1 -1
- package/dist/openapi/models/CreateExternalImport403Response.d.ts +1 -1
- package/dist/openapi/models/CreateExternalImport403Response.js +1 -1
- package/dist/openapi/models/CreateExternalImport422Response.d.ts +1 -1
- package/dist/openapi/models/CreateExternalImport422Response.js +1 -1
- package/dist/openapi/models/CreateWorkflow401Response.d.ts +1 -1
- package/dist/openapi/models/CreateWorkflow401Response.js +1 -1
- package/dist/openapi/models/CreateWorkflow422Response.d.ts +1 -1
- package/dist/openapi/models/CreateWorkflow422Response.js +1 -1
- package/dist/openapi/models/CreditTransaction.d.ts +1 -1
- package/dist/openapi/models/CreditTransaction.js +1 -1
- package/dist/openapi/models/CreditTransactionSourceBucket.d.ts +1 -1
- package/dist/openapi/models/CreditTransactionSourceBucket.js +1 -1
- package/dist/openapi/models/CreditsBalanceResponse.d.ts +1 -1
- package/dist/openapi/models/CreditsBalanceResponse.js +1 -1
- package/dist/openapi/models/CreditsBalanceSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/CreditsBalanceSuccessEnvelope.js +1 -1
- package/dist/openapi/models/CreditsUsageResponse.d.ts +1 -1
- package/dist/openapi/models/CreditsUsageResponse.js +1 -1
- package/dist/openapi/models/CreditsUsageSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/CreditsUsageSuccessEnvelope.js +1 -1
- package/dist/openapi/models/Delivery.d.ts +1 -1
- package/dist/openapi/models/Delivery.js +1 -1
- package/dist/openapi/models/DeliveryOutputRef.d.ts +1 -1
- package/dist/openapi/models/DeliveryOutputRef.js +1 -1
- package/dist/openapi/models/DeliveryPlan.d.ts +1 -1
- package/dist/openapi/models/DeliveryPlan.js +1 -1
- package/dist/openapi/models/DeliveryPlanOutput.d.ts +1 -1
- package/dist/openapi/models/DeliveryPlanOutput.js +1 -1
- package/dist/openapi/models/DeliveryPlanReason.d.ts +1 -1
- package/dist/openapi/models/DeliveryPlanReason.js +1 -1
- package/dist/openapi/models/DeliverySelection.d.ts +1 -1
- package/dist/openapi/models/DeliverySelection.js +1 -1
- package/dist/openapi/models/DownloadBundle.d.ts +1 -1
- package/dist/openapi/models/DownloadBundle.js +1 -1
- package/dist/openapi/models/DroppedOption.d.ts +1 -1
- package/dist/openapi/models/DroppedOption.js +1 -1
- package/dist/openapi/models/EmailNotify.d.ts +1 -1
- package/dist/openapi/models/EmailNotify.js +1 -1
- package/dist/openapi/models/EmptySuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/EmptySuccessEnvelope.js +1 -1
- package/dist/openapi/models/EndpointProjection.d.ts +1 -1
- package/dist/openapi/models/EndpointProjection.js +1 -1
- package/dist/openapi/models/EndpointProjectionServersInner.d.ts +1 -1
- package/dist/openapi/models/EndpointProjectionServersInner.js +1 -1
- package/dist/openapi/models/ErrorEnvelope.d.ts +1 -1
- package/dist/openapi/models/ErrorEnvelope.js +1 -1
- package/dist/openapi/models/EstimateQuality.d.ts +1 -1
- package/dist/openapi/models/EstimateQuality.js +1 -1
- package/dist/openapi/models/EstimateRange.d.ts +1 -1
- package/dist/openapi/models/EstimateRange.js +1 -1
- package/dist/openapi/models/ExportAccountData200Response.d.ts +1 -1
- package/dist/openapi/models/ExportAccountData200Response.js +1 -1
- package/dist/openapi/models/ExportAccountData200ResponseData.d.ts +1 -1
- package/dist/openapi/models/ExportAccountData200ResponseData.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/{MediaCategory.js → GetProfile200Response.d.ts} +31 -34
- package/dist/openapi/models/{TierDefaults.js → GetProfile200Response.js} +22 -17
- package/dist/openapi/models/{MediaCategory.d.ts → GetProfile200ResponseData.d.ts} +19 -17
- package/dist/openapi/models/{TierDefaultLimits.js → GetProfile200ResponseData.js} +13 -16
- package/dist/openapi/models/ImageEncodeCapabilities.d.ts +1 -1
- package/dist/openapi/models/ImageEncodeCapabilities.js +1 -1
- package/dist/openapi/models/JobDefinition.d.ts +1 -1
- package/dist/openapi/models/JobDefinition.js +1 -1
- package/dist/openapi/models/JobDownload.d.ts +1 -1
- package/dist/openapi/models/JobDownload.js +1 -1
- package/dist/openapi/models/JobInputV2.d.ts +1 -1
- package/dist/openapi/models/JobInputV2.js +1 -1
- package/dist/openapi/models/JobMediaClass.d.ts +1 -1
- package/dist/openapi/models/JobMediaClass.js +1 -1
- package/dist/openapi/models/JobOutputSource.d.ts +1 -1
- package/dist/openapi/models/JobOutputSource.js +1 -1
- package/dist/openapi/models/JobResponse.d.ts +1 -1
- package/dist/openapi/models/JobResponse.js +1 -1
- package/dist/openapi/models/JobStatus.d.ts +1 -1
- package/dist/openapi/models/JobStatus.js +1 -1
- package/dist/openapi/models/JobType.d.ts +1 -1
- package/dist/openapi/models/JobType.js +1 -1
- package/dist/openapi/models/LivenessResponse.d.ts +1 -1
- package/dist/openapi/models/LivenessResponse.js +1 -1
- package/dist/openapi/models/LoginUser200Response.d.ts +1 -1
- package/dist/openapi/models/LoginUser200Response.js +1 -1
- package/dist/openapi/models/LoginUser200ResponseData.d.ts +1 -1
- package/dist/openapi/models/LoginUser200ResponseData.js +1 -1
- package/dist/openapi/models/LoginUser200ResponseDataUser.d.ts +1 -1
- package/dist/openapi/models/LoginUser200ResponseDataUser.js +1 -1
- package/dist/openapi/models/LoginUser401Response.d.ts +1 -1
- package/dist/openapi/models/LoginUser401Response.js +1 -1
- package/dist/openapi/models/LoginUserRequest.d.ts +1 -1
- package/dist/openapi/models/LoginUserRequest.js +1 -1
- package/dist/openapi/models/LongFormConcurrencyLimitResponse.d.ts +1 -1
- package/dist/openapi/models/LongFormConcurrencyLimitResponse.js +1 -1
- package/dist/openapi/models/LongFormConcurrencyLimitResponseAllOfLinks.d.ts +1 -1
- package/dist/openapi/models/LongFormConcurrencyLimitResponseAllOfLinks.js +1 -1
- package/dist/openapi/models/MetadataResponse.d.ts +1 -1
- package/dist/openapi/models/MetadataResponse.js +1 -1
- package/dist/openapi/models/MetadataResponseDimensions.d.ts +1 -1
- package/dist/openapi/models/MetadataResponseDimensions.js +1 -1
- package/dist/openapi/models/MetadataResponseExif.d.ts +1 -1
- package/dist/openapi/models/MetadataResponseExif.js +1 -1
- package/dist/openapi/models/MetadataResponseExifGps.d.ts +1 -1
- package/dist/openapi/models/MetadataResponseExifGps.js +1 -1
- package/dist/openapi/models/MetadataSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/MetadataSuccessEnvelope.js +1 -1
- package/dist/openapi/models/MimeGroupSchema.d.ts +17 -8
- 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 +24 -7
- package/dist/openapi/models/OperationsSchemaResponse.js +3 -4
- 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 +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/ResponseEnvelope.d.ts +1 -1
- package/dist/openapi/models/ResponseEnvelope.js +1 -1
- package/dist/openapi/models/RetryResponse.d.ts +1 -1
- package/dist/openapi/models/RetryResponse.js +1 -1
- package/dist/openapi/models/RetrySuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/RetrySuccessEnvelope.js +1 -1
- package/dist/openapi/models/SseCompletionBase.d.ts +1 -1
- package/dist/openapi/models/SseCompletionBase.js +1 -1
- package/dist/openapi/models/SseEventType.d.ts +1 -1
- package/dist/openapi/models/SseEventType.js +1 -1
- package/dist/openapi/models/SseJobCompletedData.d.ts +1 -1
- package/dist/openapi/models/SseJobCompletedData.js +1 -1
- package/dist/openapi/models/SseJobFailedData.d.ts +1 -1
- package/dist/openapi/models/SseJobFailedData.js +1 -1
- package/dist/openapi/models/SseMultiOutputCompletion.d.ts +1 -1
- package/dist/openapi/models/SseMultiOutputCompletion.js +1 -1
- package/dist/openapi/models/SseMultiOutputCompletionMetrics.d.ts +1 -1
- package/dist/openapi/models/SseMultiOutputCompletionMetrics.js +1 -1
- package/dist/openapi/models/SseMultiOutputCompletionWithKind.d.ts +1 -1
- package/dist/openapi/models/SseMultiOutputCompletionWithKind.js +1 -1
- package/dist/openapi/models/SseMultiOutputResultEntry.d.ts +1 -1
- package/dist/openapi/models/SseMultiOutputResultEntry.js +1 -1
- package/dist/openapi/models/SseOperationCompletedData.d.ts +1 -1
- package/dist/openapi/models/SseOperationCompletedData.js +1 -1
- package/dist/openapi/models/SseOperationCompletionResult.d.ts +1 -1
- package/dist/openapi/models/SseOperationCompletionResult.js +1 -1
- package/dist/openapi/models/SseOperationFailedData.d.ts +1 -1
- package/dist/openapi/models/SseOperationFailedData.js +1 -1
- package/dist/openapi/models/SseOperationProgressData.d.ts +1 -1
- package/dist/openapi/models/SseOperationProgressData.js +1 -1
- package/dist/openapi/models/SseSingleOutputCompletion.d.ts +1 -1
- package/dist/openapi/models/SseSingleOutputCompletion.js +1 -1
- package/dist/openapi/models/SseWorkflowTerminalData.d.ts +1 -1
- package/dist/openapi/models/SseWorkflowTerminalData.js +1 -1
- package/dist/openapi/models/TierRestrictionKind.d.ts +19 -5
- package/dist/openapi/models/TierRestrictionKind.js +19 -5
- 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 +66 -33
- package/dist/openapi/models/UserTier.js +66 -33
- 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/models/index.d.ts +3 -4
- package/dist/openapi/models/index.js +3 -4
- package/dist/openapi/runtime.d.ts +1 -1
- package/dist/openapi/runtime.js +1 -1
- package/dist/operations/metadata-types.d.ts +1 -1
- package/dist/operations/thumbnail.d.ts +30 -7
- package/dist/operations/thumbnail.js +34 -17
- package/dist/operations/thumbnail.metadata.js +29 -1
- package/openapi/README.md +1 -1
- package/openapi/api.yaml +755 -214
- package/operation-capabilities/operation-capabilities.json +1 -1
- package/operations/schemas/compress.yaml +67 -10
- package/operations/schemas/thumbnail.yaml +100 -1
- package/package.json +7 -3
- package/dist/openapi/models/TierDefaultLimits.d.ts +0 -59
- package/dist/openapi/models/TierDefaults.d.ts +0 -66
package/README.md
CHANGED
|
@@ -1074,7 +1074,20 @@
|
|
|
1074
1074
|
}
|
|
1075
1075
|
},
|
|
1076
1076
|
"thumbnail": {
|
|
1077
|
-
"
|
|
1077
|
+
"document_epub": {
|
|
1078
|
+
"accepted_options": {
|
|
1079
|
+
"*": [
|
|
1080
|
+
"fit",
|
|
1081
|
+
"format",
|
|
1082
|
+
"height",
|
|
1083
|
+
"quality",
|
|
1084
|
+
"source",
|
|
1085
|
+
"width"
|
|
1086
|
+
]
|
|
1087
|
+
},
|
|
1088
|
+
"output_format_option": null
|
|
1089
|
+
},
|
|
1090
|
+
"document_office": {
|
|
1078
1091
|
"accepted_options": {
|
|
1079
1092
|
"*": [
|
|
1080
1093
|
"fit",
|
|
@@ -1088,12 +1101,13 @@
|
|
|
1088
1101
|
},
|
|
1089
1102
|
"output_format_option": null
|
|
1090
1103
|
},
|
|
1091
|
-
"
|
|
1104
|
+
"document_pdf": {
|
|
1092
1105
|
"accepted_options": {
|
|
1093
1106
|
"*": [
|
|
1094
1107
|
"fit",
|
|
1095
1108
|
"format",
|
|
1096
1109
|
"height",
|
|
1110
|
+
"page",
|
|
1097
1111
|
"quality",
|
|
1098
1112
|
"source",
|
|
1099
1113
|
"width"
|
|
@@ -1200,5 +1214,5 @@
|
|
|
1200
1214
|
}
|
|
1201
1215
|
}
|
|
1202
1216
|
},
|
|
1203
|
-
"schema_version": "2.
|
|
1217
|
+
"schema_version": "2.198.0"
|
|
1204
1218
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"
|
|
2
|
+
"capabilities_profile": "baseline",
|
|
3
|
+
"capabilities_version": 184,
|
|
3
4
|
"endpoints": {
|
|
4
5
|
"DELETE /api/auth/account": {
|
|
5
6
|
"auth": "required",
|
|
@@ -22,6 +23,13 @@
|
|
|
22
23
|
"operation_id": "exportAccountData",
|
|
23
24
|
"required_tier": null
|
|
24
25
|
},
|
|
26
|
+
"GET /api/auth/profile": {
|
|
27
|
+
"auth": "required",
|
|
28
|
+
"availability": "stable",
|
|
29
|
+
"identity_scoped": true,
|
|
30
|
+
"operation_id": "getProfile",
|
|
31
|
+
"required_tier": null
|
|
32
|
+
},
|
|
25
33
|
"GET /api/operations/schema": {
|
|
26
34
|
"auth": "optional",
|
|
27
35
|
"availability": "stable",
|
|
@@ -91,7 +99,12 @@
|
|
|
91
99
|
"url": "http://localhost:8080"
|
|
92
100
|
},
|
|
93
101
|
{
|
|
94
|
-
"description": "
|
|
102
|
+
"description": "Production stream host. Declared 2026-08-18 after **routing** was\nmeasured; see the two headings below for exactly what that does and\ndoes not cover.\n\n\ud83d\udd34 **THIS ENTRY WAS DELIBERATELY WITHHELD FROM 2026-08-14 TO\n2026-08-18, AND THE REASON IT LANDED IS NOT THAT THE ORIGINAL GATE\nWAS MET.** The gate was *\"prod has never had a proven stream; a\ndeclared host would be a contract fact pointing at nothing \u2014 worse\nthan the gap, because it looks resolved.\"* What changed is that **the\ngap was found to be already occupied**:\n`compression_frontend/.github/workflows/deploy-env.yml` hardcodes\n`VITE_SSE_BASE_URL: https://stream.giveitsmaller.com` for prod, so\n**the production frontend has been routing SSE to this host all\nalong, undeclared.** Contract silence was not preventing anyone from\ndepending on the host; it was preventing them from *knowing* about\nit \u2014 which is the undeclared per-client convention this whole\ndeclaration exists to end.\n\n### WHAT IS MEASURED (2026-08-18, prod, by `compression_e2e`)\n\n- An **authenticated stream against a real prod workflow** returned\n `200` with `content-type: text/event-stream`, replayed\n `operation.progress` at 10 / 50 / 90, then `operation.completed`\n carrying a real presigned S3 `download_url`, `size_bytes` 246217,\n `compression_ratio` 0.3288 \u2014 then `job.completed` and\n `workflow.completed`.\n- An **unauthenticated** request returns the full localised error\n envelope (`WORKFLOW_NOT_FOUND` with `message_key`,\n `Content-Language: en-GB`, `Vary`, HSTS), byte-identical to\n `api.giveitsmaller.com` \u2014 so this host reaches the **real\n application**, not an edge stub or a parked custom domain.\n- **CORS is correct on both hosts**: preflight `200`,\n `Access-Control-Allow-Origin` exactly\n `https://www.giveitsmaller.com`, `Allow-Credentials: true`,\n `Authorization` among the allowed headers.\n\n### \u26a0\ufe0f WHAT IS **NOT** MEASURED: DURATION \u2014 THE PROPERTY THIS HOST EXISTS FOR\n\n**The split host exists because `api.*` is an API Gateway HTTP API\nwith a 30-second hard ceiling** (staging measured it `503`-ing at\n**29.35s**, to the millisecond) and `responseTransferMode: STREAM` is\nREST-only. **Nothing has yet shown that a stream on THIS host\nsurvives past that ceiling.**\n\nThe attempt was made and could not answer: prod holds exactly one\nworkflow and it was already **terminal**, so the server correctly\nreplayed history and closed on the terminal frame \u2014 total elapsed\n**0.355s**. \u21d2 **A stream that closes at 0.4s because the job finished\nsays nothing about whether a stream that WANTED to stay open would\nsurvive to 35s.** It is a non-answer, not a negative result.\n\n**The discriminator, named so nobody re-derives it:** a\n**NON-TERMINAL** prod job, streamed and held, reporting either the\nlast-byte timestamp or that the connection was still open at **35s+**.\nOne request; no browser needed. Until then, treat long-lived prod\nstreams as unproven on this host \u2014 and note that a client falling\nback to `api.giveitsmaller.com` is *provably* subject to the 30s\nceiling, so this entry cannot be worse than the fallback.\n\n\u26a0\ufe0f **The BROWSER path is also unmeasured.** The evidence above is\nHTTP-layer. The CORS preflight is correct, which is the part a\nbrowser needs, but no browser client has been observed consuming this\nstream in production.\n\n**This entry declares ROUTING. It does not assert that prod SSE\nworks** \u2014 do not let it be quoted as though it did.\n\nThe CORS scope, auth and cross-origin caveats stated on the staging\nentry above apply here too, with one difference already noted there:\n**prod's API host has never permitted `localhost`.**\n",
|
|
103
|
+
"replaces": "https://api.giveitsmaller.com",
|
|
104
|
+
"url": "https://stream.giveitsmaller.com"
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"description": "Staging stream host. A SEPARATE PUBLIC ENTRY POINT from\n`api.staging.giveitsmaller.com`, which is why it is declared here\nrather than inherited: the API host fronts an integration with no\nresponse-streaming mode, and this is the only endpoint that needs\nstreaming.\n\n\u26a0\ufe0f **THIS HOST ALLOWS EXACTLY ONE CORS ORIGIN, AND IT IS A\nDIFFERENT POLICY FROM THE API HOST.** The stream stack sets\n`cors_allow_origin` (**singular**) to the frontend host alone, in\n**both** environments. The API host sets `cors_allow_origins`\n(**plural**) \u2014 and **the list differs BY ENVIRONMENT**:\n\n staging api host localhost:5173, localhost:3000, www.staging\u2026\n prod api host www.giveitsmaller.com \u2190 NO localhost, never had\n both stream the frontend host only (singular)\n\n\u21d2 **A BROWSER ON localhost CAN CALL THE STAGING API HOST AND\nCANNOT CALL EITHER STREAM HOST.** The break is **conditional on a\nlocal build choosing this host**: the frontend's local build leaves\n`VITE_SSE_BASE_URL` unset and falls back to the API host, so nothing\nbreaks today (measured by `compression_frontend`, 2026-08-14). **A\nclient that DOES point a localhost browser here is blocked, and the\nfailure arrives as a CORS error that reads as a configuration\nmistake in their own app.**\n\n**This is a local-development concern only; prod never permitted\nlocalhost on any host** (measured by `compression_terraform`,\n2026-08-14 \u2014 an earlier version of this note gave the staging list\nwithout saying it was staging's, which would have read as universal\nand turned a dev-experience issue into an apparent launch one).\n\n\u26a0\ufe0f **\"Just add another origin\" is not a CONFIG CHANGE here, and\nthe reason is our implementation rather than an AWS limit.** An API\nGateway **HTTP** API has a native, declarative CORS configuration\nthat takes a LIST and echoes whichever origin matches. A **REST**\nAPI has no equivalent declarative feature \u2014 the value is whatever\nthe preflight MOCK integration and the backend return \u2014 so\nmulti-origin support is possible but must be **built**\n(validate-the-Origin-then-echo), which is a change with its own\ncorrectness risk rather than an extra list entry.\n\n*(An earlier version of this note said a REST API simply cannot do\nit. That is wrong: AWS documents that for proxy integrations the\nBACKEND returns `Access-Control-Allow-Origin`, so per-origin\nresponses are available to anyone willing to implement them.\nStating a platform prohibition where an implementation choice\nexists closes a door that is open.)*\n\nThe credentialed case does foreclose the other escape: with\n`Allow-Credentials: true` the origin header cannot be `*`.\n\nThe same applies to embedded and third-party consumers, and to any\n**browser build of a published SDK**: `@giveitsmaller/sdk` ships a\nbrowser entry point whose client carries `streamEvents`, so this is\na published-surface limit rather than an internal one.\n\nA server-side caller is unaffected. **The origin list is a property\nof the deployed stack, not of this contract** \u2014 it is stated here\nbecause a client author reading only the URL cannot discover it, and\nit changes only in `compression_terraform`.\n\n\u26a0\ufe0f **AUTH ON THIS HOST IS CROSS-ORIGIN, AND `sessionAuth` IS THE\nONE THAT MAY NOT SURVIVE IT.** This operation advertises\n`bearerAuth`, `sessionAuth` and anonymous access \u2014 but the security\nlist describes what the ENDPOINT accepts, not what a browser can\ndeliver to a different origin.\n\n**Cookie domain scope is necessary and NOT sufficient.** A\ncredentialed cross-origin request additionally requires the client\nto opt in (`EventSource { withCredentials: true }`, or `fetch`\nwith `credentials: 'include'`) **and** the server to answer with\n`Access-Control-Allow-Credentials` and a non-wildcard origin. Bearer\nand capability headers likewise need the header to be permitted by\nthe preflight response.\n\n**None of that is verified by this contract, and contracts has not\nmeasured it.**\n\n\ud83d\udd34 **This passage used to conclude \"a browser client SHOULD prefer\n`bearerAuth` or the anonymous capability header on this host, and\nshould treat cookie-based session auth as unproven\". DO NOT\nREINSTATE IT.** For an **owned** stream the shipped browser client\nhas no bearer token on its runtime path at all, so that advice named\na credential the caller does not possess \u2014 leaving a logged-in user\nwith nothing to send. See **AUTH ON THE STREAM HOST** on the\noperation below, which is the single place this question is\nanswered; the cross-origin caveats above remain true and are what\nthat section is qualified by.\n",
|
|
95
108
|
"replaces": "https://api.staging.giveitsmaller.com",
|
|
96
109
|
"url": "https://stream.staging.giveitsmaller.com"
|
|
97
110
|
}
|
|
@@ -1985,7 +1998,7 @@
|
|
|
1985
1998
|
},
|
|
1986
1999
|
"encoding_mode": {
|
|
1987
2000
|
"default": "crf",
|
|
1988
|
-
"description": "crf = constant quality
|
|
2001
|
+
"description": "`crf` = constant quality. `target_size` = constrained output file size\n(two-pass). `target_size` is LIVE for mp4/MOV output; for webm/ogg output\nand long-form the server returns `feature_not_available` (use `crf` there)\nuntil two-pass for this container ships.\n\n\ud83d\udd34 **`crf` DOES NOT MEAN UNCONSTRAINED FILE SIZE. THIS DESCRIPTION USED TO\nSAY \"variable file size\" AND THAT WAS FALSE BY OMISSION.** For **mp4/MOV\noutput**, the worker additionally derives a **source-relative peak-bitrate\nceiling of roughly 60% of the source video bitrate** (`-maxrate`/`-bufsize`),\nand **it binds regardless of an explicit `crf`** \u2014 constrained-CRF. The `crf`\nvalue is still honoured as the **quality ceiling**; the cap adds a peak\nceiling on top of it.\n\n\u26a0\ufe0f **Scope, because \"we cap every video\" would be a second false sentence:**\nthe cap is **mp4/MOV only** \u2014 WebM/VP9 discards it and skips the probe\nentirely \u2014 and it is **best-effort**, so an unprobeable source gets no cap.\n\n\u2b50 **Why it exists, which is also why the old wording surprised in the wrong\ndirection:** plain CRF alone **INFLATES already-efficient sources** \u2014 an\nefficient HEVC re-encoded to H.264 at CRF 23/25/30 grows. The compress\ncontract is *reduce file size*, so the cap is what makes shrinking reliable.\nA caller who deliberately pins a low `crf` on an efficient source therefore\ngets a constrained-CRF transcode rather than a byte-for-byte original: a\ndeliberate, accepted shift.\n\n\ud83d\udd34 **THIS DESCRIPTION IS BOUND TO THE WORKER, NOT DATED AGAINST IT.**\n`tests/test_bitrate_cap_disclosure_matches_the_worker.py` reads\n`compression_lambdas` at `origin/main` and fails if the cap stops\nbeing source-relative, stops being mp4/MOV-only, or stops deriving\nfrom a source probe. **An as-of date would make a superseded\nsentence look deliberate**; a gate makes it go red instead.\n",
|
|
1989
2002
|
"type": "enum",
|
|
1990
2003
|
"values": [
|
|
1991
2004
|
"crf",
|
|
@@ -2049,7 +2062,7 @@
|
|
|
2049
2062
|
},
|
|
2050
2063
|
"preset": {
|
|
2051
2064
|
"default": "medium",
|
|
2052
|
-
"description": "
|
|
2065
|
+
"description": "x264/x265 encoder effort. **A SIZE LEVER, CONDITIONALLY** \u2014 it moves\noutput size **only while the mp4/MOV peak-bitrate cap is NOT binding.**\n\n**Measured by `compression_lambdas`, medium vs slow, all else held:**\n\n crf 30, cap inert 1,220,156 vs 1,144,043 bytes 6.2% apart\n crf 18, cap binding 2,514,788 vs 2,516,986 bytes 0.09% apart\n\n\ud83d\udd34 **THE MECHANISM IS MECHANICAL, NOT EMPIRICAL, AND EXPLAINS BOTH ROWS.**\nIn pure CRF the encoder targets constant QUALITY, so a slower preset spends\nits extra effort producing a **smaller file at the same quality**. Once\n`-maxrate` binds the encode is rate-limited, so the extra effort can only go\ninto **picture at a fixed size** \u2014 an axis a size measurement cannot see.\n\n\u26a0\ufe0f **This description previously said `preset` was effort-only and that `crf`\nwas the size lever. That was wrong**, and it was wrong because a 0.09% figure\nmeasured on a **cap-binding** clip was generalised into a property of `preset`.\n**A measurement is not a property until you know what held it.**\n\n\u21d2 **Callers optimising for size:** `crf` is the primary lever; `preset` adds\nreal reduction **only when the cap is not already constraining the encode** \u2014\nwhich is exactly the high-`crf`, small-output end. See `encoding_mode` for what\nthe cap is and when it applies.\n\n\u26a0\ufe0f **What the extra effort buys once the cap DOES bind is mechanically\nimplied and empirically UNCONFIRMED.** The mechanism says it must go\ninto picture; `compression_lambdas` could not see a difference on 2x\ncrops, but that was **one frame of one 5-second clip**, and preset\ndifferences concentrate in high-motion frames that were not\ndeliberately sampled. **Recorded as unestablished, not asserted.**\n",
|
|
2053
2066
|
"type": "enum",
|
|
2054
2067
|
"values": [
|
|
2055
2068
|
"ultrafast",
|
|
@@ -4446,10 +4459,72 @@
|
|
|
4446
4459
|
"description": "Resize an image to specific dimensions, or extract a preview frame/page from a video or document. For images this is a full resizer (1-16384px), not just small previews.",
|
|
4447
4460
|
"input_model": "single",
|
|
4448
4461
|
"mime_groups": {
|
|
4449
|
-
"
|
|
4462
|
+
"document_epub": {
|
|
4463
|
+
"max_input_size_bytes": 104857600,
|
|
4464
|
+
"max_output_pixels": 16000000,
|
|
4465
|
+
"mimes": [
|
|
4466
|
+
"application/epub+zip"
|
|
4467
|
+
],
|
|
4468
|
+
"options": {
|
|
4469
|
+
"fit": {
|
|
4470
|
+
"default": "crop",
|
|
4471
|
+
"description": "Resize mode",
|
|
4472
|
+
"type": "enum",
|
|
4473
|
+
"values": [
|
|
4474
|
+
"max",
|
|
4475
|
+
"crop",
|
|
4476
|
+
"scale"
|
|
4477
|
+
]
|
|
4478
|
+
},
|
|
4479
|
+
"format": {
|
|
4480
|
+
"default": "jpg",
|
|
4481
|
+
"description": "Output format for the thumbnail",
|
|
4482
|
+
"type": "enum",
|
|
4483
|
+
"values": [
|
|
4484
|
+
"jpg",
|
|
4485
|
+
"png",
|
|
4486
|
+
"webp"
|
|
4487
|
+
]
|
|
4488
|
+
},
|
|
4489
|
+
"height": {
|
|
4490
|
+
"description": "Target height in pixels (1-16384; width*height <= 16MP). Optional \u2014 see `width` for the omitted-default behaviour.",
|
|
4491
|
+
"max": 16384,
|
|
4492
|
+
"min": 1,
|
|
4493
|
+
"type": "integer"
|
|
4494
|
+
},
|
|
4495
|
+
"quality": {
|
|
4496
|
+
"default": 85,
|
|
4497
|
+
"depends_on": {
|
|
4498
|
+
"format": [
|
|
4499
|
+
"jpg",
|
|
4500
|
+
"webp"
|
|
4501
|
+
]
|
|
4502
|
+
},
|
|
4503
|
+
"description": "Output quality for lossy thumbnail formats (jpg/webp): higher = better quality, larger file. Ignored for png (lossless).",
|
|
4504
|
+
"max": 100,
|
|
4505
|
+
"min": 1,
|
|
4506
|
+
"type": "integer"
|
|
4507
|
+
},
|
|
4508
|
+
"source": {
|
|
4509
|
+
"default": "cover",
|
|
4510
|
+
"description": "`cover` (the only supported value) = extract the EPUB's declared cover image \u2014 the cheap path, no rendering. Cover lookup supports both mechanisms: the EPUB 3 `cover-image` property on an OPF manifest item, AND the legacy EPUB 2 `<meta name=\"cover\" content=\"...\"/>` pointing at a manifest item \u2014 supporting only the former would miss a large slice of real-world files. Both are staging-proven (pL16ZfOw Wave 3). A cover image is OPTIONAL per W3C EPUB 3.3, so a cover-less EPUB is a REAL and expected case: it fails with `error_code: processing_failed` and `is_retryable: false`. That is the live behaviour, not an aspiration \u2014 the worker classifies it as `CoverError::NoCoverDeclared` and maps it there (`epub/error.rs`), and non-retryability is DERIVED from the code rather than set per-call, so it cannot drift. A cover-less EPUB will not grow a cover, so retrying is always futile. A more specific code would be better, and is NOT promised here: `ErrorCode` (asyncapi) is a CLOSED enum with no \"no cover\" member, so adding one is a real cross-repo co-land (enum edit -> SDK regen -> lockstep). Until then this description states what actually happens \u2014 an undecided-reject note on a STABLE route would leave consumers unable to handle a case they will certainly meet.",
|
|
4511
|
+
"type": "enum",
|
|
4512
|
+
"values": [
|
|
4513
|
+
"cover"
|
|
4514
|
+
]
|
|
4515
|
+
},
|
|
4516
|
+
"width": {
|
|
4517
|
+
"description": "Target width in pixels (1-16384; width*height <= 16MP). Optional \u2014 when omitted the server applies an aspect-preserving default (both omitted \u2192 longest edge 320px; only one of width/height provided \u2192 the other is derived from the source aspect ratio).",
|
|
4518
|
+
"max": 16384,
|
|
4519
|
+
"min": 1,
|
|
4520
|
+
"type": "integer"
|
|
4521
|
+
}
|
|
4522
|
+
}
|
|
4523
|
+
},
|
|
4524
|
+
"document_office": {
|
|
4525
|
+
"max_input_size_bytes": 157286400,
|
|
4450
4526
|
"max_output_pixels": 16000000,
|
|
4451
4527
|
"mimes": [
|
|
4452
|
-
"application/pdf",
|
|
4453
4528
|
"application/vnd.openxmlformats-officedocument.wordprocessingml.document",
|
|
4454
4529
|
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
|
|
4455
4530
|
"application/vnd.openxmlformats-officedocument.presentationml.presentation",
|
|
@@ -4523,10 +4598,11 @@
|
|
|
4523
4598
|
}
|
|
4524
4599
|
}
|
|
4525
4600
|
},
|
|
4526
|
-
"
|
|
4601
|
+
"document_pdf": {
|
|
4602
|
+
"input_size_bound": "processing_time",
|
|
4527
4603
|
"max_output_pixels": 16000000,
|
|
4528
4604
|
"mimes": [
|
|
4529
|
-
"application/
|
|
4605
|
+
"application/pdf"
|
|
4530
4606
|
],
|
|
4531
4607
|
"options": {
|
|
4532
4608
|
"fit": {
|
|
@@ -4555,6 +4631,15 @@
|
|
|
4555
4631
|
"min": 1,
|
|
4556
4632
|
"type": "integer"
|
|
4557
4633
|
},
|
|
4634
|
+
"page": {
|
|
4635
|
+
"default": 1,
|
|
4636
|
+
"depends_on": {
|
|
4637
|
+
"source": "page"
|
|
4638
|
+
},
|
|
4639
|
+
"description": "1-based index of the printed page to render, after print-layout pagination is applied. For office formats this is the page in the document's print layout \u2014 NOT a 1:1 sheet/slide index: a spreadsheet sheet may span multiple printed pages and multi-sheet workbooks paginate their sheets in order. For PDF inputs it is the PDF page number directly.",
|
|
4640
|
+
"min": 1,
|
|
4641
|
+
"type": "integer"
|
|
4642
|
+
},
|
|
4558
4643
|
"quality": {
|
|
4559
4644
|
"default": 85,
|
|
4560
4645
|
"depends_on": {
|
|
@@ -4569,10 +4654,11 @@
|
|
|
4569
4654
|
"type": "integer"
|
|
4570
4655
|
},
|
|
4571
4656
|
"source": {
|
|
4572
|
-
"default": "
|
|
4573
|
-
"description": "`
|
|
4657
|
+
"default": "page",
|
|
4658
|
+
"description": "`page` = render a specific page/slide. `cover` = extract a cover image \u2014 only meaningful for EPUB inputs, which are served by the `document_epub` group; on PDF/office/ODF it is accepted and IGNORED (retained for backward compatibility).",
|
|
4574
4659
|
"type": "enum",
|
|
4575
4660
|
"values": [
|
|
4661
|
+
"page",
|
|
4576
4662
|
"cover"
|
|
4577
4663
|
]
|
|
4578
4664
|
},
|
|
@@ -5130,7 +5216,7 @@
|
|
|
5130
5216
|
"sole_op": true
|
|
5131
5217
|
}
|
|
5132
5218
|
},
|
|
5133
|
-
"schema_version": "2.
|
|
5219
|
+
"schema_version": "2.198.0",
|
|
5134
5220
|
"source_commit": null,
|
|
5135
5221
|
"user_tier": null,
|
|
5136
5222
|
"workflow_features": {
|
|
@@ -2803,7 +2803,7 @@
|
|
|
2803
2803
|
},
|
|
2804
2804
|
"encoding_mode": {
|
|
2805
2805
|
"default": "crf",
|
|
2806
|
-
"description": "crf = constant quality
|
|
2806
|
+
"description": "`crf` = constant quality. `target_size` = constrained output file size\n(two-pass). `target_size` is LIVE for mp4/MOV output; for webm/ogg output\nand long-form the server returns `feature_not_available` (use `crf` there)\nuntil two-pass for this container ships.\n\n\ud83d\udd34 **`crf` DOES NOT MEAN UNCONSTRAINED FILE SIZE. THIS DESCRIPTION USED TO\nSAY \"variable file size\" AND THAT WAS FALSE BY OMISSION.** For **mp4/MOV\noutput**, the worker additionally derives a **source-relative peak-bitrate\nceiling of roughly 60% of the source video bitrate** (`-maxrate`/`-bufsize`),\nand **it binds regardless of an explicit `crf`** \u2014 constrained-CRF. The `crf`\nvalue is still honoured as the **quality ceiling**; the cap adds a peak\nceiling on top of it.\n\n\u26a0\ufe0f **Scope, because \"we cap every video\" would be a second false sentence:**\nthe cap is **mp4/MOV only** \u2014 WebM/VP9 discards it and skips the probe\nentirely \u2014 and it is **best-effort**, so an unprobeable source gets no cap.\n\n\u2b50 **Why it exists, which is also why the old wording surprised in the wrong\ndirection:** plain CRF alone **INFLATES already-efficient sources** \u2014 an\nefficient HEVC re-encoded to H.264 at CRF 23/25/30 grows. The compress\ncontract is *reduce file size*, so the cap is what makes shrinking reliable.\nA caller who deliberately pins a low `crf` on an efficient source therefore\ngets a constrained-CRF transcode rather than a byte-for-byte original: a\ndeliberate, accepted shift.\n\n\ud83d\udd34 **THIS DESCRIPTION IS BOUND TO THE WORKER, NOT DATED AGAINST IT.**\n`tests/test_bitrate_cap_disclosure_matches_the_worker.py` reads\n`compression_lambdas` at `origin/main` and fails if the cap stops\nbeing source-relative, stops being mp4/MOV-only, or stops deriving\nfrom a source probe. **An as-of date would make a superseded\nsentence look deliberate**; a gate makes it go red instead.\n",
|
|
2807
2807
|
"origin": "contract",
|
|
2808
2808
|
"sdk_exposure": "expose",
|
|
2809
2809
|
"surface_key": "encodingMode",
|
|
@@ -2908,7 +2908,7 @@
|
|
|
2908
2908
|
},
|
|
2909
2909
|
"preset": {
|
|
2910
2910
|
"default": "medium",
|
|
2911
|
-
"description": "
|
|
2911
|
+
"description": "x264/x265 encoder effort. **A SIZE LEVER, CONDITIONALLY** \u2014 it moves\noutput size **only while the mp4/MOV peak-bitrate cap is NOT binding.**\n\n**Measured by `compression_lambdas`, medium vs slow, all else held:**\n\n crf 30, cap inert 1,220,156 vs 1,144,043 bytes 6.2% apart\n crf 18, cap binding 2,514,788 vs 2,516,986 bytes 0.09% apart\n\n\ud83d\udd34 **THE MECHANISM IS MECHANICAL, NOT EMPIRICAL, AND EXPLAINS BOTH ROWS.**\nIn pure CRF the encoder targets constant QUALITY, so a slower preset spends\nits extra effort producing a **smaller file at the same quality**. Once\n`-maxrate` binds the encode is rate-limited, so the extra effort can only go\ninto **picture at a fixed size** \u2014 an axis a size measurement cannot see.\n\n\u26a0\ufe0f **This description previously said `preset` was effort-only and that `crf`\nwas the size lever. That was wrong**, and it was wrong because a 0.09% figure\nmeasured on a **cap-binding** clip was generalised into a property of `preset`.\n**A measurement is not a property until you know what held it.**\n\n\u21d2 **Callers optimising for size:** `crf` is the primary lever; `preset` adds\nreal reduction **only when the cap is not already constraining the encode** \u2014\nwhich is exactly the high-`crf`, small-output end. See `encoding_mode` for what\nthe cap is and when it applies.\n\n\u26a0\ufe0f **What the extra effort buys once the cap DOES bind is mechanically\nimplied and empirically UNCONFIRMED.** The mechanism says it must go\ninto picture; `compression_lambdas` could not see a difference on 2x\ncrops, but that was **one frame of one 5-second clip**, and preset\ndifferences concentrate in high-motion frames that were not\ndeliberately sampled. **Recorded as unestablished, not asserted.**\n",
|
|
2912
2912
|
"enum_ref": "VideoPreset",
|
|
2913
2913
|
"enum_translations": {
|
|
2914
2914
|
"fast": "Fast",
|
|
@@ -6209,11 +6209,105 @@
|
|
|
6209
6209
|
},
|
|
6210
6210
|
"input_model": "single",
|
|
6211
6211
|
"media_groups": {
|
|
6212
|
-
"
|
|
6212
|
+
"document_epub": {
|
|
6213
|
+
"max_input_size_bytes": 104857600,
|
|
6214
|
+
"max_output_pixels": 16000000,
|
|
6215
|
+
"media_group": "document",
|
|
6216
|
+
"mimes": [
|
|
6217
|
+
"application/epub+zip"
|
|
6218
|
+
],
|
|
6219
|
+
"options": {
|
|
6220
|
+
"fit": {
|
|
6221
|
+
"default": "crop",
|
|
6222
|
+
"description": "Resize mode",
|
|
6223
|
+
"origin": "contract",
|
|
6224
|
+
"sdk_exposure": "expose",
|
|
6225
|
+
"surface_key": "fit",
|
|
6226
|
+
"type": "enum",
|
|
6227
|
+
"value_exposure": {
|
|
6228
|
+
"crop": "expose",
|
|
6229
|
+
"max": "expose",
|
|
6230
|
+
"scale": "expose"
|
|
6231
|
+
},
|
|
6232
|
+
"values": [
|
|
6233
|
+
"max",
|
|
6234
|
+
"crop",
|
|
6235
|
+
"scale"
|
|
6236
|
+
]
|
|
6237
|
+
},
|
|
6238
|
+
"format": {
|
|
6239
|
+
"default": "jpg",
|
|
6240
|
+
"description": "Output format for the thumbnail",
|
|
6241
|
+
"origin": "contract",
|
|
6242
|
+
"sdk_exposure": "expose",
|
|
6243
|
+
"surface_key": "format",
|
|
6244
|
+
"type": "enum",
|
|
6245
|
+
"value_exposure": {
|
|
6246
|
+
"jpg": "expose",
|
|
6247
|
+
"png": "expose",
|
|
6248
|
+
"webp": "expose"
|
|
6249
|
+
},
|
|
6250
|
+
"values": [
|
|
6251
|
+
"jpg",
|
|
6252
|
+
"png",
|
|
6253
|
+
"webp"
|
|
6254
|
+
]
|
|
6255
|
+
},
|
|
6256
|
+
"height": {
|
|
6257
|
+
"description": "Target height in pixels (1-16384; width*height <= 16MP). Optional \u2014 see `width` for the omitted-default behaviour.",
|
|
6258
|
+
"max": 16384,
|
|
6259
|
+
"min": 1,
|
|
6260
|
+
"origin": "contract",
|
|
6261
|
+
"sdk_exposure": "expose",
|
|
6262
|
+
"surface_key": "height",
|
|
6263
|
+
"type": "integer"
|
|
6264
|
+
},
|
|
6265
|
+
"quality": {
|
|
6266
|
+
"default": 85,
|
|
6267
|
+
"depends_on": {
|
|
6268
|
+
"format": [
|
|
6269
|
+
"jpg",
|
|
6270
|
+
"webp"
|
|
6271
|
+
]
|
|
6272
|
+
},
|
|
6273
|
+
"description": "Output quality for lossy thumbnail formats (jpg/webp): higher = better quality, larger file. Ignored for png (lossless).",
|
|
6274
|
+
"max": 100,
|
|
6275
|
+
"min": 1,
|
|
6276
|
+
"origin": "contract",
|
|
6277
|
+
"sdk_exposure": "expose",
|
|
6278
|
+
"surface_key": "quality",
|
|
6279
|
+
"type": "integer"
|
|
6280
|
+
},
|
|
6281
|
+
"source": {
|
|
6282
|
+
"default": "cover",
|
|
6283
|
+
"description": "`cover` (the only supported value) = extract the EPUB's declared cover image \u2014 the cheap path, no rendering. Cover lookup supports both mechanisms: the EPUB 3 `cover-image` property on an OPF manifest item, AND the legacy EPUB 2 `<meta name=\"cover\" content=\"...\"/>` pointing at a manifest item \u2014 supporting only the former would miss a large slice of real-world files. Both are staging-proven (pL16ZfOw Wave 3). A cover image is OPTIONAL per W3C EPUB 3.3, so a cover-less EPUB is a REAL and expected case: it fails with `error_code: processing_failed` and `is_retryable: false`. That is the live behaviour, not an aspiration \u2014 the worker classifies it as `CoverError::NoCoverDeclared` and maps it there (`epub/error.rs`), and non-retryability is DERIVED from the code rather than set per-call, so it cannot drift. A cover-less EPUB will not grow a cover, so retrying is always futile. A more specific code would be better, and is NOT promised here: `ErrorCode` (asyncapi) is a CLOSED enum with no \"no cover\" member, so adding one is a real cross-repo co-land (enum edit -> SDK regen -> lockstep). Until then this description states what actually happens \u2014 an undecided-reject note on a STABLE route would leave consumers unable to handle a case they will certainly meet.",
|
|
6284
|
+
"origin": "contract",
|
|
6285
|
+
"sdk_exposure": "expose",
|
|
6286
|
+
"surface_key": "source",
|
|
6287
|
+
"type": "enum",
|
|
6288
|
+
"value_exposure": {
|
|
6289
|
+
"cover": "expose"
|
|
6290
|
+
},
|
|
6291
|
+
"values": [
|
|
6292
|
+
"cover"
|
|
6293
|
+
]
|
|
6294
|
+
},
|
|
6295
|
+
"width": {
|
|
6296
|
+
"description": "Target width in pixels (1-16384; width*height <= 16MP). Optional \u2014 when omitted the server applies an aspect-preserving default (both omitted \u2192 longest edge 320px; only one of width/height provided \u2192 the other is derived from the source aspect ratio).",
|
|
6297
|
+
"max": 16384,
|
|
6298
|
+
"min": 1,
|
|
6299
|
+
"origin": "contract",
|
|
6300
|
+
"sdk_exposure": "expose",
|
|
6301
|
+
"surface_key": "width",
|
|
6302
|
+
"type": "integer"
|
|
6303
|
+
}
|
|
6304
|
+
}
|
|
6305
|
+
},
|
|
6306
|
+
"document_office": {
|
|
6307
|
+
"max_input_size_bytes": 157286400,
|
|
6213
6308
|
"max_output_pixels": 16000000,
|
|
6214
6309
|
"media_group": "document",
|
|
6215
6310
|
"mimes": [
|
|
6216
|
-
"application/pdf",
|
|
6217
6311
|
"application/vnd.openxmlformats-officedocument.wordprocessingml.document",
|
|
6218
6312
|
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
|
|
6219
6313
|
"application/vnd.openxmlformats-officedocument.presentationml.presentation",
|
|
@@ -6322,11 +6416,12 @@
|
|
|
6322
6416
|
}
|
|
6323
6417
|
}
|
|
6324
6418
|
},
|
|
6325
|
-
"
|
|
6419
|
+
"document_pdf": {
|
|
6420
|
+
"input_size_bound": "processing_time",
|
|
6326
6421
|
"max_output_pixels": 16000000,
|
|
6327
6422
|
"media_group": "document",
|
|
6328
6423
|
"mimes": [
|
|
6329
|
-
"application/
|
|
6424
|
+
"application/pdf"
|
|
6330
6425
|
],
|
|
6331
6426
|
"options": {
|
|
6332
6427
|
"fit": {
|
|
@@ -6374,6 +6469,18 @@
|
|
|
6374
6469
|
"surface_key": "height",
|
|
6375
6470
|
"type": "integer"
|
|
6376
6471
|
},
|
|
6472
|
+
"page": {
|
|
6473
|
+
"default": 1,
|
|
6474
|
+
"depends_on": {
|
|
6475
|
+
"source": "page"
|
|
6476
|
+
},
|
|
6477
|
+
"description": "1-based index of the printed page to render, after print-layout pagination is applied. For office formats this is the page in the document's print layout \u2014 NOT a 1:1 sheet/slide index: a spreadsheet sheet may span multiple printed pages and multi-sheet workbooks paginate their sheets in order. For PDF inputs it is the PDF page number directly.",
|
|
6478
|
+
"min": 1,
|
|
6479
|
+
"origin": "contract",
|
|
6480
|
+
"sdk_exposure": "expose",
|
|
6481
|
+
"surface_key": "page",
|
|
6482
|
+
"type": "integer"
|
|
6483
|
+
},
|
|
6377
6484
|
"quality": {
|
|
6378
6485
|
"default": 85,
|
|
6379
6486
|
"depends_on": {
|
|
@@ -6391,16 +6498,18 @@
|
|
|
6391
6498
|
"type": "integer"
|
|
6392
6499
|
},
|
|
6393
6500
|
"source": {
|
|
6394
|
-
"default": "
|
|
6395
|
-
"description": "`
|
|
6501
|
+
"default": "page",
|
|
6502
|
+
"description": "`page` = render a specific page/slide. `cover` = extract a cover image \u2014 only meaningful for EPUB inputs, which are served by the `document_epub` group; on PDF/office/ODF it is accepted and IGNORED (retained for backward compatibility).",
|
|
6396
6503
|
"origin": "contract",
|
|
6397
6504
|
"sdk_exposure": "expose",
|
|
6398
6505
|
"surface_key": "source",
|
|
6399
6506
|
"type": "enum",
|
|
6400
6507
|
"value_exposure": {
|
|
6401
|
-
"cover": "expose"
|
|
6508
|
+
"cover": "expose",
|
|
6509
|
+
"page": "expose"
|
|
6402
6510
|
},
|
|
6403
6511
|
"values": [
|
|
6512
|
+
"page",
|
|
6404
6513
|
"cover"
|
|
6405
6514
|
]
|
|
6406
6515
|
},
|
|
@@ -7188,7 +7297,7 @@
|
|
|
7188
7297
|
}
|
|
7189
7298
|
},
|
|
7190
7299
|
"preset_config_hash": "sha256:354814f7906f85be6a6ca5ede6c0722c83cdc058fd658a9bb2b0996520466c6d",
|
|
7191
|
-
"schema_version": "2.
|
|
7300
|
+
"schema_version": "2.198.0",
|
|
7192
7301
|
"sdk_spec_version": "2.3.0",
|
|
7193
|
-
"source_hash": "sha256:
|
|
7302
|
+
"source_hash": "sha256:6eae18a646e1338f5fc7e62cc0ae70e4670a4de671ed00f9539e957ea1cf755c"
|
|
7194
7303
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* GISL Compression API
|
|
3
3
|
* REST API for the GISL (Give It Smaller) file compression and processing service. **Architecture:** - Upload files to get a `file_id` - Create workflows referencing uploaded files with operations (compress, thumbnail, image_watermark, text_watermark, merge, archive, convert, custom_luma, audio_overlay, audio_watermark) - Poll status, stream SSE events, or receive webhook callbacks - Download results per operation output **Response envelope:** All mutation and query endpoints return `{ success: true, data: {...} }` on success and `{ success: false, error: \"...\", details: [...] }` on failure. Exceptions: `GET /api/operations/schema` returns raw JSON (per-tier private caching with ETag revalidation per ADR-0002 + I3), health probes return flat objects, and `POST /api/contact` returns 204 with no body. **Availability metadata.** This spec uses the `x-availability` vendor extension as **decorative documentation only**. Per [ADR-0001](../docs/decisions/0001-contract-first-availability.md) §1.5, the runtime endpoint `GET /api/operations/schema` (ticket I3) is the authoritative source; the sidecar `availability.json` (ticket I3b) is the authoritative companion (generated, never hand-edited; CI cross-checks runtime ⇄ sidecar). SDKs MUST NOT depend on `x-availability` reaching generated code — code-generators that surface vendor extensions may emit it as documentation, but consumers read availability from the runtime endpoint, not from the generated bindings. The 5-value vocabulary (`stable | beta | experimental | planned | deprecated`) is defined in the `AvailabilityValue` schema. See `schemas/FORMAT.md` §Availability Taxonomy for the operational rules (parser obligation: absent = stable; per-enum-value granularity is the `per_value_availability` primitive landed via ticket I17). **Localisation (per ticket [I26](https://trello.com/c/rcnqwgI4)).** Error responses + paused/blocked workflow statuses carry a localised human-readable `message` alongside a stable, never-localised `message_key`. Machine-readable fields (`error`, enum values, status codes) stay canonical English. - **Currently committed locales:** `en-GB` only (per ticket [`4GKyuYo6`](https://trello.com/c/4GKyuYo6)). The I26 carrier shape (`Accept-Language` + `Content-Language` + `Vary` headers + `locale` envelope field + `message_key` + `message_params`) is stable and exercised; the **catalog** of translated `message` strings is en-GB-only at runtime today. Additional locales (e.g. `pt-PT`) will be advertised by name when their catalogs ship — the request/response carrier shape does NOT change when a new locale lands. Treat unrequested locales as \"machine-code + `message_key` path is committed; localised `message` prose is not\" until this prose enumerates them by name. - **Request:** `Accept-Language` header per RFC 9110 §12.5.4 (q-value negotiation supported). The server selects the best-match locale from its supported list; falls back to `en-GB` when no match — which, until additional catalogs land, is every non-`en-GB` `Accept-Language`. - **Response:** `Content-Language: <locale>` echo on every localised response; `Vary: Accept-Language` on every response (CDN/cache correctness — different `Accept-Language` requests produce different responses). `Vary` is emitted unconditionally so the header contract does not flip when a second locale ships. - **Fallback locale:** `en-GB` (also the canonical locale for `message_key` translations and English `message` prose). - **SDK guidance:** switch on `error` (machine code) for typed error branches; surface `message_key` to client-side i18n catalogs (SDK companion work tracked at X19, cross-repo); display `message` for end-user UI; **never parse `message` for control flow** — it changes per locale. Carrier shape lives on `ErrorEnvelope` (envelope-level optional `message_key` + `message` + `locale` + `message_params`) and `ValidationErrorEnvelope` (also per-`details[]` entry). Existing 402 / 403 / 422 envelopes (`BalanceExhaustedResponse`, `FeatureNotAvailableResponse`, `FeatureTierRestrictedResponse`, `WorkflowPausedDetail`) inherit the convention. **Upload thresholds (per tickets [u0ar7Yye](https://trello.com/c/u0ar7Yye) + [58nBQLWQ](https://trello.com/c/58nBQLWQ)).** Canonical upload constants (single-shot cap, multipart chunk size, multipart concurrency default, multipart first-chunk size) live on the `UploadThresholds` schema with `const:`-pinned values. SDK generators emit these as typed binding constants so frontend / API / SDKs reference one source of truth instead of hardcoding magic numbers. A runtime `GET /api/uploads/limits` endpoint for dynamic discovery (per-tier / per-environment overrides) is a deferred follow-up.
|
|
4
4
|
*
|
|
5
|
-
* The version of the OpenAPI document: 2.
|
|
5
|
+
* The version of the OpenAPI document: 2.198.0
|
|
6
6
|
*
|
|
7
7
|
*
|
|
8
8
|
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* GISL Compression API
|
|
5
5
|
* REST API for the GISL (Give It Smaller) file compression and processing service. **Architecture:** - Upload files to get a `file_id` - Create workflows referencing uploaded files with operations (compress, thumbnail, image_watermark, text_watermark, merge, archive, convert, custom_luma, audio_overlay, audio_watermark) - Poll status, stream SSE events, or receive webhook callbacks - Download results per operation output **Response envelope:** All mutation and query endpoints return `{ success: true, data: {...} }` on success and `{ success: false, error: \"...\", details: [...] }` on failure. Exceptions: `GET /api/operations/schema` returns raw JSON (per-tier private caching with ETag revalidation per ADR-0002 + I3), health probes return flat objects, and `POST /api/contact` returns 204 with no body. **Availability metadata.** This spec uses the `x-availability` vendor extension as **decorative documentation only**. Per [ADR-0001](../docs/decisions/0001-contract-first-availability.md) §1.5, the runtime endpoint `GET /api/operations/schema` (ticket I3) is the authoritative source; the sidecar `availability.json` (ticket I3b) is the authoritative companion (generated, never hand-edited; CI cross-checks runtime ⇄ sidecar). SDKs MUST NOT depend on `x-availability` reaching generated code — code-generators that surface vendor extensions may emit it as documentation, but consumers read availability from the runtime endpoint, not from the generated bindings. The 5-value vocabulary (`stable | beta | experimental | planned | deprecated`) is defined in the `AvailabilityValue` schema. See `schemas/FORMAT.md` §Availability Taxonomy for the operational rules (parser obligation: absent = stable; per-enum-value granularity is the `per_value_availability` primitive landed via ticket I17). **Localisation (per ticket [I26](https://trello.com/c/rcnqwgI4)).** Error responses + paused/blocked workflow statuses carry a localised human-readable `message` alongside a stable, never-localised `message_key`. Machine-readable fields (`error`, enum values, status codes) stay canonical English. - **Currently committed locales:** `en-GB` only (per ticket [`4GKyuYo6`](https://trello.com/c/4GKyuYo6)). The I26 carrier shape (`Accept-Language` + `Content-Language` + `Vary` headers + `locale` envelope field + `message_key` + `message_params`) is stable and exercised; the **catalog** of translated `message` strings is en-GB-only at runtime today. Additional locales (e.g. `pt-PT`) will be advertised by name when their catalogs ship — the request/response carrier shape does NOT change when a new locale lands. Treat unrequested locales as \"machine-code + `message_key` path is committed; localised `message` prose is not\" until this prose enumerates them by name. - **Request:** `Accept-Language` header per RFC 9110 §12.5.4 (q-value negotiation supported). The server selects the best-match locale from its supported list; falls back to `en-GB` when no match — which, until additional catalogs land, is every non-`en-GB` `Accept-Language`. - **Response:** `Content-Language: <locale>` echo on every localised response; `Vary: Accept-Language` on every response (CDN/cache correctness — different `Accept-Language` requests produce different responses). `Vary` is emitted unconditionally so the header contract does not flip when a second locale ships. - **Fallback locale:** `en-GB` (also the canonical locale for `message_key` translations and English `message` prose). - **SDK guidance:** switch on `error` (machine code) for typed error branches; surface `message_key` to client-side i18n catalogs (SDK companion work tracked at X19, cross-repo); display `message` for end-user UI; **never parse `message` for control flow** — it changes per locale. Carrier shape lives on `ErrorEnvelope` (envelope-level optional `message_key` + `message` + `locale` + `message_params`) and `ValidationErrorEnvelope` (also per-`details[]` entry). Existing 402 / 403 / 422 envelopes (`BalanceExhaustedResponse`, `FeatureNotAvailableResponse`, `FeatureTierRestrictedResponse`, `WorkflowPausedDetail`) inherit the convention. **Upload thresholds (per tickets [u0ar7Yye](https://trello.com/c/u0ar7Yye) + [58nBQLWQ](https://trello.com/c/58nBQLWQ)).** Canonical upload constants (single-shot cap, multipart chunk size, multipart concurrency default, multipart first-chunk size) live on the `UploadThresholds` schema with `const:`-pinned values. SDK generators emit these as typed binding constants so frontend / API / SDKs reference one source of truth instead of hardcoding magic numbers. A runtime `GET /api/uploads/limits` endpoint for dynamic discovery (per-tier / per-environment overrides) is a deferred follow-up.
|
|
6
6
|
*
|
|
7
|
-
* The version of the OpenAPI document: 2.
|
|
7
|
+
* The version of the OpenAPI document: 2.198.0
|
|
8
8
|
*
|
|
9
9
|
*
|
|
10
10
|
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* GISL Compression API
|
|
3
3
|
* REST API for the GISL (Give It Smaller) file compression and processing service. **Architecture:** - Upload files to get a `file_id` - Create workflows referencing uploaded files with operations (compress, thumbnail, image_watermark, text_watermark, merge, archive, convert, custom_luma, audio_overlay, audio_watermark) - Poll status, stream SSE events, or receive webhook callbacks - Download results per operation output **Response envelope:** All mutation and query endpoints return `{ success: true, data: {...} }` on success and `{ success: false, error: \"...\", details: [...] }` on failure. Exceptions: `GET /api/operations/schema` returns raw JSON (per-tier private caching with ETag revalidation per ADR-0002 + I3), health probes return flat objects, and `POST /api/contact` returns 204 with no body. **Availability metadata.** This spec uses the `x-availability` vendor extension as **decorative documentation only**. Per [ADR-0001](../docs/decisions/0001-contract-first-availability.md) §1.5, the runtime endpoint `GET /api/operations/schema` (ticket I3) is the authoritative source; the sidecar `availability.json` (ticket I3b) is the authoritative companion (generated, never hand-edited; CI cross-checks runtime ⇄ sidecar). SDKs MUST NOT depend on `x-availability` reaching generated code — code-generators that surface vendor extensions may emit it as documentation, but consumers read availability from the runtime endpoint, not from the generated bindings. The 5-value vocabulary (`stable | beta | experimental | planned | deprecated`) is defined in the `AvailabilityValue` schema. See `schemas/FORMAT.md` §Availability Taxonomy for the operational rules (parser obligation: absent = stable; per-enum-value granularity is the `per_value_availability` primitive landed via ticket I17). **Localisation (per ticket [I26](https://trello.com/c/rcnqwgI4)).** Error responses + paused/blocked workflow statuses carry a localised human-readable `message` alongside a stable, never-localised `message_key`. Machine-readable fields (`error`, enum values, status codes) stay canonical English. - **Currently committed locales:** `en-GB` only (per ticket [`4GKyuYo6`](https://trello.com/c/4GKyuYo6)). The I26 carrier shape (`Accept-Language` + `Content-Language` + `Vary` headers + `locale` envelope field + `message_key` + `message_params`) is stable and exercised; the **catalog** of translated `message` strings is en-GB-only at runtime today. Additional locales (e.g. `pt-PT`) will be advertised by name when their catalogs ship — the request/response carrier shape does NOT change when a new locale lands. Treat unrequested locales as \"machine-code + `message_key` path is committed; localised `message` prose is not\" until this prose enumerates them by name. - **Request:** `Accept-Language` header per RFC 9110 §12.5.4 (q-value negotiation supported). The server selects the best-match locale from its supported list; falls back to `en-GB` when no match — which, until additional catalogs land, is every non-`en-GB` `Accept-Language`. - **Response:** `Content-Language: <locale>` echo on every localised response; `Vary: Accept-Language` on every response (CDN/cache correctness — different `Accept-Language` requests produce different responses). `Vary` is emitted unconditionally so the header contract does not flip when a second locale ships. - **Fallback locale:** `en-GB` (also the canonical locale for `message_key` translations and English `message` prose). - **SDK guidance:** switch on `error` (machine code) for typed error branches; surface `message_key` to client-side i18n catalogs (SDK companion work tracked at X19, cross-repo); display `message` for end-user UI; **never parse `message` for control flow** — it changes per locale. Carrier shape lives on `ErrorEnvelope` (envelope-level optional `message_key` + `message` + `locale` + `message_params`) and `ValidationErrorEnvelope` (also per-`details[]` entry). Existing 402 / 403 / 422 envelopes (`BalanceExhaustedResponse`, `FeatureNotAvailableResponse`, `FeatureTierRestrictedResponse`, `WorkflowPausedDetail`) inherit the convention. **Upload thresholds (per tickets [u0ar7Yye](https://trello.com/c/u0ar7Yye) + [58nBQLWQ](https://trello.com/c/58nBQLWQ)).** Canonical upload constants (single-shot cap, multipart chunk size, multipart concurrency default, multipart first-chunk size) live on the `UploadThresholds` schema with `const:`-pinned values. SDK generators emit these as typed binding constants so frontend / API / SDKs reference one source of truth instead of hardcoding magic numbers. A runtime `GET /api/uploads/limits` endpoint for dynamic discovery (per-tier / per-environment overrides) is a deferred follow-up.
|
|
4
4
|
*
|
|
5
|
-
* The version of the OpenAPI document: 2.
|
|
5
|
+
* The version of the OpenAPI document: 2.198.0
|
|
6
6
|
*
|
|
7
7
|
*
|
|
8
8
|
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
|
@@ -23,15 +23,23 @@ import type { AccountLimitsLimits } from './AccountLimitsLimits.js';
|
|
|
23
23
|
* (`UserTier.maxFileSizeBytes` — the request-level tier quota the
|
|
24
24
|
* upload endpoints enforce). **Distinct** from the per-operation
|
|
25
25
|
* processing ceiling `max_input_size_bytes` in operation schemas
|
|
26
|
-
* (different axis AND number).
|
|
27
|
-
*
|
|
26
|
+
* (different axis AND number).
|
|
27
|
+
* ⚠️ **The per-tier byte defaults are deliberately NOT restated here.**
|
|
28
|
+
* This line used to list them for `free` / `pro` / `enterprise` and
|
|
29
|
+
* **silently omitted `max`** — a tier the `UserTier` enum declares. The
|
|
30
|
+
* response itself carries the answer per caller (`tier_default` beside
|
|
31
|
+
* `effective`), which is override-aware in a way a static table can
|
|
32
|
+
* never be.
|
|
28
33
|
* - `max_total_input_size_bytes`: the effective merge combined-input
|
|
29
34
|
* size cap (the summed-inputs ceiling). Same key as the
|
|
30
35
|
* operation-schema merge band; the band is processing-class +
|
|
31
|
-
* tier dependent
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
* the
|
|
36
|
+
* tier dependent. **The server resolves the effective value for the
|
|
37
|
+
* caller** and returns it here — that is the point of this endpoint.
|
|
38
|
+
* ⚠️ **A THIRD restated per-tier table lived on this line** (it named
|
|
39
|
+
* two tiers' band ceilings and, like the other two, omitted `max`). The
|
|
40
|
+
* machine-readable source is `per_tier_constraints` on the operation
|
|
41
|
+
* schema's `processing_class`; it is generated, so it cannot drift from
|
|
42
|
+
* the schemas the way a sentence here does.
|
|
35
43
|
*
|
|
36
44
|
* @export
|
|
37
45
|
* @interface AccountLimits
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* GISL Compression API
|
|
5
5
|
* REST API for the GISL (Give It Smaller) file compression and processing service. **Architecture:** - Upload files to get a `file_id` - Create workflows referencing uploaded files with operations (compress, thumbnail, image_watermark, text_watermark, merge, archive, convert, custom_luma, audio_overlay, audio_watermark) - Poll status, stream SSE events, or receive webhook callbacks - Download results per operation output **Response envelope:** All mutation and query endpoints return `{ success: true, data: {...} }` on success and `{ success: false, error: \"...\", details: [...] }` on failure. Exceptions: `GET /api/operations/schema` returns raw JSON (per-tier private caching with ETag revalidation per ADR-0002 + I3), health probes return flat objects, and `POST /api/contact` returns 204 with no body. **Availability metadata.** This spec uses the `x-availability` vendor extension as **decorative documentation only**. Per [ADR-0001](../docs/decisions/0001-contract-first-availability.md) §1.5, the runtime endpoint `GET /api/operations/schema` (ticket I3) is the authoritative source; the sidecar `availability.json` (ticket I3b) is the authoritative companion (generated, never hand-edited; CI cross-checks runtime ⇄ sidecar). SDKs MUST NOT depend on `x-availability` reaching generated code — code-generators that surface vendor extensions may emit it as documentation, but consumers read availability from the runtime endpoint, not from the generated bindings. The 5-value vocabulary (`stable | beta | experimental | planned | deprecated`) is defined in the `AvailabilityValue` schema. See `schemas/FORMAT.md` §Availability Taxonomy for the operational rules (parser obligation: absent = stable; per-enum-value granularity is the `per_value_availability` primitive landed via ticket I17). **Localisation (per ticket [I26](https://trello.com/c/rcnqwgI4)).** Error responses + paused/blocked workflow statuses carry a localised human-readable `message` alongside a stable, never-localised `message_key`. Machine-readable fields (`error`, enum values, status codes) stay canonical English. - **Currently committed locales:** `en-GB` only (per ticket [`4GKyuYo6`](https://trello.com/c/4GKyuYo6)). The I26 carrier shape (`Accept-Language` + `Content-Language` + `Vary` headers + `locale` envelope field + `message_key` + `message_params`) is stable and exercised; the **catalog** of translated `message` strings is en-GB-only at runtime today. Additional locales (e.g. `pt-PT`) will be advertised by name when their catalogs ship — the request/response carrier shape does NOT change when a new locale lands. Treat unrequested locales as \"machine-code + `message_key` path is committed; localised `message` prose is not\" until this prose enumerates them by name. - **Request:** `Accept-Language` header per RFC 9110 §12.5.4 (q-value negotiation supported). The server selects the best-match locale from its supported list; falls back to `en-GB` when no match — which, until additional catalogs land, is every non-`en-GB` `Accept-Language`. - **Response:** `Content-Language: <locale>` echo on every localised response; `Vary: Accept-Language` on every response (CDN/cache correctness — different `Accept-Language` requests produce different responses). `Vary` is emitted unconditionally so the header contract does not flip when a second locale ships. - **Fallback locale:** `en-GB` (also the canonical locale for `message_key` translations and English `message` prose). - **SDK guidance:** switch on `error` (machine code) for typed error branches; surface `message_key` to client-side i18n catalogs (SDK companion work tracked at X19, cross-repo); display `message` for end-user UI; **never parse `message` for control flow** — it changes per locale. Carrier shape lives on `ErrorEnvelope` (envelope-level optional `message_key` + `message` + `locale` + `message_params`) and `ValidationErrorEnvelope` (also per-`details[]` entry). Existing 402 / 403 / 422 envelopes (`BalanceExhaustedResponse`, `FeatureNotAvailableResponse`, `FeatureTierRestrictedResponse`, `WorkflowPausedDetail`) inherit the convention. **Upload thresholds (per tickets [u0ar7Yye](https://trello.com/c/u0ar7Yye) + [58nBQLWQ](https://trello.com/c/58nBQLWQ)).** Canonical upload constants (single-shot cap, multipart chunk size, multipart concurrency default, multipart first-chunk size) live on the `UploadThresholds` schema with `const:`-pinned values. SDK generators emit these as typed binding constants so frontend / API / SDKs reference one source of truth instead of hardcoding magic numbers. A runtime `GET /api/uploads/limits` endpoint for dynamic discovery (per-tier / per-environment overrides) is a deferred follow-up.
|
|
6
6
|
*
|
|
7
|
-
* The version of the OpenAPI document: 2.
|
|
7
|
+
* The version of the OpenAPI document: 2.198.0
|
|
8
8
|
*
|
|
9
9
|
*
|
|
10
10
|
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|