@giveitsmaller/contracts 0.89.0 → 0.91.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 +10 -1
- package/accepted-options/image-output-routes.json +1 -1
- package/asyncapi/events.yaml +16 -5
- package/availability/availability.json +43 -6
- package/code-builder/code-builder-metadata.json +49 -5
- package/dist/asyncapi/UploadProbeStatus.d.ts +2 -1
- package/dist/asyncapi/UploadProbeStatus.js +1 -0
- package/dist/openapi/models/AccountLimitEntry.d.ts +1 -1
- package/dist/openapi/models/AccountLimitEntry.js +1 -1
- package/dist/openapi/models/AccountLimits.d.ts +1 -1
- package/dist/openapi/models/AccountLimits.js +1 -1
- package/dist/openapi/models/AccountLimitsLimits.d.ts +1 -1
- package/dist/openapi/models/AccountLimitsLimits.js +1 -1
- package/dist/openapi/models/AccountLimitsSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/AccountLimitsSuccessEnvelope.js +1 -1
- package/dist/openapi/models/AnonymousLimitExceededResponse.d.ts +1 -1
- package/dist/openapi/models/AnonymousLimitExceededResponse.js +1 -1
- package/dist/openapi/models/AnonymousOperationNotAllowedResponse.d.ts +1 -1
- package/dist/openapi/models/AnonymousOperationNotAllowedResponse.js +1 -1
- package/dist/openapi/models/AnonymousQuotaExhaustedResponse.d.ts +1 -1
- package/dist/openapi/models/AnonymousQuotaExhaustedResponse.js +1 -1
- package/dist/openapi/models/AudioWatermarkDecodeRequest.d.ts +1 -1
- package/dist/openapi/models/AudioWatermarkDecodeRequest.js +1 -1
- package/dist/openapi/models/AudioWatermarkDecodeResponse.d.ts +1 -1
- package/dist/openapi/models/AudioWatermarkDecodeResponse.js +1 -1
- package/dist/openapi/models/AuthErrorResponse.d.ts +1 -1
- package/dist/openapi/models/AuthErrorResponse.js +1 -1
- package/dist/openapi/models/AuthErrorType.d.ts +1 -1
- package/dist/openapi/models/AuthErrorType.js +1 -1
- package/dist/openapi/models/AuthRejectionEnvelope.d.ts +1 -1
- package/dist/openapi/models/AuthRejectionEnvelope.js +1 -1
- package/dist/openapi/models/AuthenticatedIdentity.d.ts +1 -1
- package/dist/openapi/models/AuthenticatedIdentity.js +1 -1
- package/dist/openapi/models/AvailabilityValue.d.ts +1 -1
- package/dist/openapi/models/AvailabilityValue.js +1 -1
- package/dist/openapi/models/BalanceExhaustedResponse.d.ts +1 -1
- package/dist/openapi/models/BalanceExhaustedResponse.js +1 -1
- package/dist/openapi/models/BalanceExhaustedResponseAllOfLinks.d.ts +1 -1
- package/dist/openapi/models/BalanceExhaustedResponseAllOfLinks.js +1 -1
- package/dist/openapi/models/BillingCheckoutRequest.d.ts +1 -1
- package/dist/openapi/models/BillingCheckoutRequest.js +1 -1
- package/dist/openapi/models/BillingCheckoutSession.d.ts +1 -1
- package/dist/openapi/models/BillingCheckoutSession.js +1 -1
- package/dist/openapi/models/BillingCheckoutSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/BillingCheckoutSuccessEnvelope.js +1 -1
- package/dist/openapi/models/CallbackEventType.d.ts +1 -1
- package/dist/openapi/models/CallbackEventType.js +1 -1
- package/dist/openapi/models/CancelAccountDeletion200Response.d.ts +1 -1
- package/dist/openapi/models/CancelAccountDeletion200Response.js +1 -1
- package/dist/openapi/models/CancelAccountDeletion200ResponseData.d.ts +1 -1
- package/dist/openapi/models/CancelAccountDeletion200ResponseData.js +1 -1
- package/dist/openapi/models/CapabilityCondition.d.ts +1 -1
- package/dist/openapi/models/CapabilityCondition.js +1 -1
- package/dist/openapi/models/CapabilityConditionOneOf.d.ts +1 -1
- package/dist/openapi/models/CapabilityConditionOneOf.js +1 -1
- package/dist/openapi/models/CapabilityConditionOneOf1.d.ts +1 -1
- package/dist/openapi/models/CapabilityConditionOneOf1.js +1 -1
- package/dist/openapi/models/CapabilityConditionOneOf2.d.ts +1 -1
- package/dist/openapi/models/CapabilityConditionOneOf2.js +1 -1
- package/dist/openapi/models/CapabilityConditionOneOf3.d.ts +1 -1
- package/dist/openapi/models/CapabilityConditionOneOf3.js +1 -1
- package/dist/openapi/models/CapabilityConditionOneOf4.d.ts +1 -1
- package/dist/openapi/models/CapabilityConditionOneOf4.js +1 -1
- package/dist/openapi/models/CapabilityConditionOneOf5.d.ts +1 -1
- package/dist/openapi/models/CapabilityConditionOneOf5.js +1 -1
- package/dist/openapi/models/CapabilityConditionOneOf6.d.ts +1 -1
- package/dist/openapi/models/CapabilityConditionOneOf6.js +1 -1
- package/dist/openapi/models/CapabilityConditionOneOf7.d.ts +1 -1
- package/dist/openapi/models/CapabilityConditionOneOf7.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/CeilingBasisValue.d.ts +1 -1
- package/dist/openapi/models/CeilingBasisValue.js +1 -1
- package/dist/openapi/models/ChangePasswordRequest.d.ts +1 -1
- package/dist/openapi/models/ChangePasswordRequest.js +1 -1
- package/dist/openapi/models/CheckoutSessionStatusResponse.d.ts +1 -1
- package/dist/openapi/models/CheckoutSessionStatusResponse.js +1 -1
- package/dist/openapi/models/CheckoutSessionStatusResponseData.d.ts +1 -1
- package/dist/openapi/models/CheckoutSessionStatusResponseData.js +1 -1
- package/dist/openapi/models/CodegenSource.d.ts +1 -1
- package/dist/openapi/models/CodegenSource.js +1 -1
- package/dist/openapi/models/CodegenSourceInput.d.ts +1 -1
- package/dist/openapi/models/CodegenSourceInput.js +1 -1
- package/dist/openapi/models/CodegenSourceJob.d.ts +1 -1
- package/dist/openapi/models/CodegenSourceJob.js +1 -1
- package/dist/openapi/models/CodegenSourceJobSource.d.ts +1 -1
- package/dist/openapi/models/CodegenSourceJobSource.js +1 -1
- package/dist/openapi/models/CodegenSourceOperation.d.ts +1 -1
- package/dist/openapi/models/CodegenSourceOperation.js +1 -1
- package/dist/openapi/models/CodegenUploadPlaceholder.d.ts +1 -1
- package/dist/openapi/models/CodegenUploadPlaceholder.js +1 -1
- package/dist/openapi/models/CompositionPlan.d.ts +1 -1
- package/dist/openapi/models/CompositionPlan.js +1 -1
- package/dist/openapi/models/CompositionPlanJob.d.ts +1 -1
- package/dist/openapi/models/CompositionPlanJob.js +1 -1
- package/dist/openapi/models/CompositionPlanOperation.d.ts +1 -1
- package/dist/openapi/models/CompositionPlanOperation.js +1 -1
- package/dist/openapi/models/ConfirmEmailChange200Response.d.ts +1 -1
- package/dist/openapi/models/ConfirmEmailChange200Response.js +1 -1
- package/dist/openapi/models/ConfirmEmailChange200ResponseData.d.ts +1 -1
- package/dist/openapi/models/ConfirmEmailChange200ResponseData.js +1 -1
- package/dist/openapi/models/ConfirmEmailChangeRequest.d.ts +1 -1
- package/dist/openapi/models/ConfirmEmailChangeRequest.js +1 -1
- package/dist/openapi/models/ConnectionSource.d.ts +1 -1
- package/dist/openapi/models/ConnectionSource.js +1 -1
- package/dist/openapi/models/ContactRequest.d.ts +1 -1
- package/dist/openapi/models/ContactRequest.js +1 -1
- package/dist/openapi/models/ContactSubject.d.ts +1 -1
- package/dist/openapi/models/ContactSubject.js +1 -1
- package/dist/openapi/models/ContactValidationErrorResponse.d.ts +1 -1
- package/dist/openapi/models/ContactValidationErrorResponse.js +1 -1
- package/dist/openapi/models/CreateApiKey201Response.d.ts +1 -1
- package/dist/openapi/models/CreateApiKey201Response.js +1 -1
- package/dist/openapi/models/CreateApiKey201ResponseData.d.ts +1 -1
- package/dist/openapi/models/CreateApiKey201ResponseData.js +1 -1
- package/dist/openapi/models/CreateApiKeyRequest.d.ts +1 -1
- package/dist/openapi/models/CreateApiKeyRequest.js +1 -1
- package/dist/openapi/models/CreateBillingCheckoutSession422Response.d.ts +1 -1
- package/dist/openapi/models/CreateBillingCheckoutSession422Response.js +1 -1
- package/dist/openapi/models/CreateExternalImport403Response.d.ts +1 -1
- package/dist/openapi/models/CreateExternalImport403Response.js +1 -1
- package/dist/openapi/models/CreateExternalImport422Response.d.ts +1 -1
- package/dist/openapi/models/CreateExternalImport422Response.js +1 -1
- package/dist/openapi/models/CreateWorkflow401Response.d.ts +1 -1
- package/dist/openapi/models/CreateWorkflow401Response.js +1 -1
- package/dist/openapi/models/CreateWorkflow403Response.d.ts +1 -1
- package/dist/openapi/models/CreateWorkflow403Response.js +1 -1
- package/dist/openapi/models/CreateWorkflow422Response.d.ts +1 -1
- package/dist/openapi/models/CreateWorkflow422Response.js +1 -1
- package/dist/openapi/models/CreditTransaction.d.ts +1 -1
- package/dist/openapi/models/CreditTransaction.js +1 -1
- package/dist/openapi/models/CreditTransactionSourceBucket.d.ts +1 -1
- package/dist/openapi/models/CreditTransactionSourceBucket.js +1 -1
- package/dist/openapi/models/CreditsBalanceResponse.d.ts +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/ExportAccountData200ResponseDataBilling.d.ts +1 -1
- package/dist/openapi/models/ExportAccountData200ResponseDataBilling.js +1 -1
- package/dist/openapi/models/ExportAccountData200ResponseDataBillingCheckoutSessionsInner.d.ts +1 -1
- package/dist/openapi/models/ExportAccountData200ResponseDataBillingCheckoutSessionsInner.js +1 -1
- package/dist/openapi/models/ExternalDestination.d.ts +1 -1
- package/dist/openapi/models/ExternalDestination.js +1 -1
- package/dist/openapi/models/ExternalImportCreatedResponse.d.ts +1 -1
- package/dist/openapi/models/ExternalImportCreatedResponse.js +1 -1
- package/dist/openapi/models/ExternalImportCreatedSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/ExternalImportCreatedSuccessEnvelope.js +1 -1
- package/dist/openapi/models/ExternalImportRequest.d.ts +1 -1
- package/dist/openapi/models/ExternalImportRequest.js +1 -1
- package/dist/openapi/models/ExternalImportToken.d.ts +1 -1
- package/dist/openapi/models/ExternalImportToken.js +1 -1
- package/dist/openapi/models/ExternalSource.d.ts +1 -1
- package/dist/openapi/models/ExternalSource.js +1 -1
- package/dist/openapi/models/FeatureNotAvailableResponse.d.ts +1 -1
- package/dist/openapi/models/FeatureNotAvailableResponse.js +1 -1
- package/dist/openapi/models/FeatureTierRestrictedResponse.d.ts +1 -1
- package/dist/openapi/models/FeatureTierRestrictedResponse.js +1 -1
- package/dist/openapi/models/FeatureViolation.d.ts +1 -1
- package/dist/openapi/models/FeatureViolation.js +1 -1
- package/dist/openapi/models/GetProfile200Response.d.ts +1 -1
- package/dist/openapi/models/GetProfile200Response.js +1 -1
- package/dist/openapi/models/GetProfile200ResponseData.d.ts +1 -1
- package/dist/openapi/models/GetProfile200ResponseData.js +1 -1
- package/dist/openapi/models/ImageEncodeCapabilities.d.ts +1 -1
- package/dist/openapi/models/ImageEncodeCapabilities.js +1 -1
- package/dist/openapi/models/JobDefinition.d.ts +1 -1
- package/dist/openapi/models/JobDefinition.js +1 -1
- package/dist/openapi/models/JobDownload.d.ts +1 -1
- package/dist/openapi/models/JobDownload.js +1 -1
- package/dist/openapi/models/JobInputV2.d.ts +1 -1
- package/dist/openapi/models/JobInputV2.js +1 -1
- package/dist/openapi/models/JobMediaClass.d.ts +1 -1
- package/dist/openapi/models/JobMediaClass.js +1 -1
- package/dist/openapi/models/JobOutputSource.d.ts +1 -1
- package/dist/openapi/models/JobOutputSource.js +1 -1
- package/dist/openapi/models/JobResponse.d.ts +1 -1
- package/dist/openapi/models/JobResponse.js +1 -1
- package/dist/openapi/models/JobStatus.d.ts +1 -1
- package/dist/openapi/models/JobStatus.js +1 -1
- package/dist/openapi/models/JobType.d.ts +1 -1
- package/dist/openapi/models/JobType.js +1 -1
- package/dist/openapi/models/LivenessResponse.d.ts +1 -1
- package/dist/openapi/models/LivenessResponse.js +1 -1
- package/dist/openapi/models/LoginUser200Response.d.ts +1 -1
- package/dist/openapi/models/LoginUser200Response.js +1 -1
- package/dist/openapi/models/LoginUser200ResponseData.d.ts +1 -1
- package/dist/openapi/models/LoginUser200ResponseData.js +1 -1
- package/dist/openapi/models/LoginUser200ResponseDataUser.d.ts +1 -1
- package/dist/openapi/models/LoginUser200ResponseDataUser.js +1 -1
- package/dist/openapi/models/LoginUser401Response.d.ts +1 -1
- package/dist/openapi/models/LoginUser401Response.js +1 -1
- package/dist/openapi/models/LoginUserRequest.d.ts +1 -1
- package/dist/openapi/models/LoginUserRequest.js +1 -1
- package/dist/openapi/models/LongFormConcurrencyLimitResponse.d.ts +1 -1
- package/dist/openapi/models/LongFormConcurrencyLimitResponse.js +1 -1
- package/dist/openapi/models/LongFormConcurrencyLimitResponseAllOfLinks.d.ts +1 -1
- package/dist/openapi/models/LongFormConcurrencyLimitResponseAllOfLinks.js +1 -1
- package/dist/openapi/models/MetadataResponse.d.ts +1 -1
- package/dist/openapi/models/MetadataResponse.js +1 -1
- package/dist/openapi/models/MetadataResponseDimensions.d.ts +1 -1
- package/dist/openapi/models/MetadataResponseDimensions.js +1 -1
- package/dist/openapi/models/MetadataResponseExif.d.ts +1 -1
- package/dist/openapi/models/MetadataResponseExif.js +1 -1
- package/dist/openapi/models/MetadataResponseExifGps.d.ts +1 -1
- package/dist/openapi/models/MetadataResponseExifGps.js +1 -1
- package/dist/openapi/models/MetadataSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/MetadataSuccessEnvelope.js +1 -1
- package/dist/openapi/models/MimeGroupSchema.d.ts +1 -1
- package/dist/openapi/models/MimeGroupSchema.js +1 -1
- package/dist/openapi/models/MultiInputSource.d.ts +1 -1
- package/dist/openapi/models/MultiInputSource.js +1 -1
- package/dist/openapi/models/MultipartCompleteRequest.d.ts +1 -1
- package/dist/openapi/models/MultipartCompleteRequest.js +1 -1
- package/dist/openapi/models/MultipartCompleteRequestPartsInner.d.ts +1 -1
- package/dist/openapi/models/MultipartCompleteRequestPartsInner.js +1 -1
- package/dist/openapi/models/MultipartCompleteResponse.d.ts +1 -1
- package/dist/openapi/models/MultipartCompleteResponse.js +1 -1
- package/dist/openapi/models/MultipartCompleteSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/MultipartCompleteSuccessEnvelope.js +1 -1
- package/dist/openapi/models/MultipartInitiateRequestMetadataHint.d.ts +1 -1
- package/dist/openapi/models/MultipartInitiateRequestMetadataHint.js +1 -1
- package/dist/openapi/models/MultipartInitiateResponse.d.ts +1 -1
- package/dist/openapi/models/MultipartInitiateResponse.js +1 -1
- package/dist/openapi/models/MultipartInitiateSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/MultipartInitiateSuccessEnvelope.js +1 -1
- package/dist/openapi/models/MultipartKeepaliveResponse.d.ts +1 -1
- package/dist/openapi/models/MultipartKeepaliveResponse.js +1 -1
- package/dist/openapi/models/MultipartKeepaliveSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/MultipartKeepaliveSuccessEnvelope.js +1 -1
- package/dist/openapi/models/MultipartPartListing.d.ts +1 -1
- package/dist/openapi/models/MultipartPartListing.js +1 -1
- package/dist/openapi/models/MultipartPresignRequest.d.ts +1 -1
- package/dist/openapi/models/MultipartPresignRequest.js +1 -1
- package/dist/openapi/models/MultipartPresignResponse.d.ts +1 -1
- package/dist/openapi/models/MultipartPresignResponse.js +1 -1
- package/dist/openapi/models/MultipartPresignSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/MultipartPresignSuccessEnvelope.js +1 -1
- package/dist/openapi/models/MultipartStatusResponse.d.ts +1 -1
- package/dist/openapi/models/MultipartStatusResponse.js +1 -1
- package/dist/openapi/models/MultipartStatusSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/MultipartStatusSuccessEnvelope.js +1 -1
- package/dist/openapi/models/NotifyConfig.d.ts +1 -1
- package/dist/openapi/models/NotifyConfig.js +1 -1
- package/dist/openapi/models/OperationCapability.d.ts +1 -1
- package/dist/openapi/models/OperationCapability.js +1 -1
- package/dist/openapi/models/OperationDefinition.d.ts +13 -5
- package/dist/openapi/models/OperationDefinition.js +1 -1
- package/dist/openapi/models/OperationDownload.d.ts +1 -1
- package/dist/openapi/models/OperationDownload.js +1 -1
- package/dist/openapi/models/OperationInputModel.d.ts +1 -1
- package/dist/openapi/models/OperationInputModel.js +1 -1
- package/dist/openapi/models/OperationMessageParamsValue.d.ts +1 -1
- package/dist/openapi/models/OperationMessageParamsValue.js +1 -1
- package/dist/openapi/models/OperationResponse.d.ts +4 -2
- package/dist/openapi/models/OperationResponse.js +1 -1
- package/dist/openapi/models/OperationResult.d.ts +1 -1
- package/dist/openapi/models/OperationResult.js +1 -1
- package/dist/openapi/models/OperationResultMetadata.d.ts +6 -2
- 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 +2 -2
- package/dist/openapi/models/OperationType.js +2 -2
- package/dist/openapi/models/OperationsSchemaResponse.d.ts +1 -1
- package/dist/openapi/models/OperationsSchemaResponse.js +1 -1
- package/dist/openapi/models/OperationsSchemaResponseWorkflowFeatures.d.ts +1 -1
- package/dist/openapi/models/OperationsSchemaResponseWorkflowFeatures.js +1 -1
- package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDelivery.d.ts +1 -1
- package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDelivery.js +1 -1
- package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliveryMode.d.ts +1 -1
- package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliveryMode.js +1 -1
- package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliverySelection.d.ts +1 -1
- package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesDeliverySelection.js +1 -1
- package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesProcessing.d.ts +1 -1
- package/dist/openapi/models/OperationsSchemaResponseWorkflowFeaturesProcessing.js +1 -1
- package/dist/openapi/models/OptionSchema.d.ts +18 -1
- package/dist/openapi/models/OptionSchema.js +4 -1
- package/dist/openapi/models/OptionSchemaPerValueConstraintsValue.d.ts +32 -0
- package/dist/openapi/models/OptionSchemaPerValueConstraintsValue.js +41 -0
- 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/ProbeUpload422Response.d.ts +1 -1
- package/dist/openapi/models/ProbeUpload422Response.js +1 -1
- package/dist/openapi/models/ProcessingClass.d.ts +1 -1
- package/dist/openapi/models/ProcessingClass.js +1 -1
- package/dist/openapi/models/ProcessingClassBandViolation.d.ts +1 -1
- package/dist/openapi/models/ProcessingClassBandViolation.js +1 -1
- package/dist/openapi/models/ProcessingClassConstraints.d.ts +1 -1
- package/dist/openapi/models/ProcessingClassConstraints.js +1 -1
- package/dist/openapi/models/ProcessingClassEntry.d.ts +1 -1
- package/dist/openapi/models/ProcessingClassEntry.js +1 -1
- package/dist/openapi/models/ProcessingClassEntryInputUniformity.d.ts +1 -1
- package/dist/openapi/models/ProcessingClassEntryInputUniformity.js +1 -1
- package/dist/openapi/models/ProcessingClassEntryResolutionBands.d.ts +1 -1
- package/dist/openapi/models/ProcessingClassEntryResolutionBands.js +1 -1
- package/dist/openapi/models/ProcessingClassExceedsBandResponse.d.ts +1 -1
- package/dist/openapi/models/ProcessingClassExceedsBandResponse.js +1 -1
- package/dist/openapi/models/ProcessingClassHint.d.ts +1 -1
- package/dist/openapi/models/ProcessingClassHint.js +1 -1
- package/dist/openapi/models/ProcessingClassReason.d.ts +1 -1
- package/dist/openapi/models/ProcessingClassReason.js +1 -1
- package/dist/openapi/models/ProcessingClassRejectReason.d.ts +1 -1
- package/dist/openapi/models/ProcessingClassRejectReason.js +1 -1
- package/dist/openapi/models/ProcessingPlan.d.ts +1 -1
- package/dist/openapi/models/ProcessingPlan.js +1 -1
- package/dist/openapi/models/ProcessingPlanJob.d.ts +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/ResolutionBand.d.ts +1 -1
- package/dist/openapi/models/ResolutionBand.js +1 -1
- package/dist/openapi/models/ResolutionBandCeiling.d.ts +1 -1
- package/dist/openapi/models/ResolutionBandCeiling.js +1 -1
- package/dist/openapi/models/ResolutionBandCeilingConstraints.d.ts +1 -1
- package/dist/openapi/models/ResolutionBandCeilingConstraints.js +1 -1
- package/dist/openapi/models/ResolutionBandCeilingDerivation.d.ts +1 -1
- package/dist/openapi/models/ResolutionBandCeilingDerivation.js +1 -1
- package/dist/openapi/models/ResponseEnvelope.d.ts +1 -1
- package/dist/openapi/models/ResponseEnvelope.js +1 -1
- package/dist/openapi/models/RetryResponse.d.ts +1 -1
- package/dist/openapi/models/RetryResponse.js +1 -1
- package/dist/openapi/models/RetrySuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/RetrySuccessEnvelope.js +1 -1
- package/dist/openapi/models/SseCompletionBase.d.ts +1 -1
- package/dist/openapi/models/SseCompletionBase.js +1 -1
- package/dist/openapi/models/SseConnectionLimitResponse.d.ts +1 -1
- package/dist/openapi/models/SseConnectionLimitResponse.js +1 -1
- package/dist/openapi/models/SseEventType.d.ts +1 -1
- package/dist/openapi/models/SseEventType.js +1 -1
- package/dist/openapi/models/SseJobCompletedData.d.ts +1 -1
- package/dist/openapi/models/SseJobCompletedData.js +1 -1
- package/dist/openapi/models/SseJobFailedData.d.ts +1 -1
- package/dist/openapi/models/SseJobFailedData.js +1 -1
- package/dist/openapi/models/SseMultiOutputCompletion.d.ts +1 -1
- package/dist/openapi/models/SseMultiOutputCompletion.js +1 -1
- package/dist/openapi/models/SseMultiOutputCompletionMetrics.d.ts +1 -1
- package/dist/openapi/models/SseMultiOutputCompletionMetrics.js +1 -1
- package/dist/openapi/models/SseMultiOutputCompletionWithKind.d.ts +1 -1
- package/dist/openapi/models/SseMultiOutputCompletionWithKind.js +1 -1
- package/dist/openapi/models/SseMultiOutputResultEntry.d.ts +1 -1
- package/dist/openapi/models/SseMultiOutputResultEntry.js +1 -1
- package/dist/openapi/models/SseOperationCompletedData.d.ts +1 -1
- package/dist/openapi/models/SseOperationCompletedData.js +1 -1
- package/dist/openapi/models/SseOperationCompletionResult.d.ts +1 -1
- package/dist/openapi/models/SseOperationCompletionResult.js +1 -1
- package/dist/openapi/models/SseOperationFailedData.d.ts +1 -1
- package/dist/openapi/models/SseOperationFailedData.js +1 -1
- package/dist/openapi/models/SseOperationProgressData.d.ts +1 -1
- package/dist/openapi/models/SseOperationProgressData.js +1 -1
- package/dist/openapi/models/SseSingleOutputCompletion.d.ts +1 -1
- package/dist/openapi/models/SseSingleOutputCompletion.js +1 -1
- package/dist/openapi/models/SseWorkflowTerminalData.d.ts +1 -1
- package/dist/openapi/models/SseWorkflowTerminalData.js +1 -1
- package/dist/openapi/models/TierRestrictionKind.d.ts +1 -1
- package/dist/openapi/models/TierRestrictionKind.js +1 -1
- package/dist/openapi/models/TierRestrictionResponse.d.ts +1 -1
- package/dist/openapi/models/TierRestrictionResponse.js +1 -1
- package/dist/openapi/models/UpdateProfile200Response.d.ts +1 -1
- package/dist/openapi/models/UpdateProfile200Response.js +1 -1
- package/dist/openapi/models/UpdateProfile200ResponseData.d.ts +1 -1
- package/dist/openapi/models/UpdateProfile200ResponseData.js +1 -1
- package/dist/openapi/models/UpdateProfile422Response.d.ts +1 -1
- package/dist/openapi/models/UpdateProfile422Response.js +1 -1
- package/dist/openapi/models/UpdateProfileRequest.d.ts +1 -1
- package/dist/openapi/models/UpdateProfileRequest.js +1 -1
- package/dist/openapi/models/UploadConstraintsApplied.d.ts +1 -1
- package/dist/openapi/models/UploadConstraintsApplied.js +1 -1
- package/dist/openapi/models/UploadDurationExceedsTierResponse.d.ts +1 -1
- package/dist/openapi/models/UploadDurationExceedsTierResponse.js +1 -1
- package/dist/openapi/models/UploadFile403Response.d.ts +1 -1
- package/dist/openapi/models/UploadFile403Response.js +1 -1
- package/dist/openapi/models/UploadFile422Response.d.ts +1 -1
- package/dist/openapi/models/UploadFile422Response.js +1 -1
- package/dist/openapi/models/UploadProbeMediaMetadata.d.ts +1 -1
- package/dist/openapi/models/UploadProbeMediaMetadata.js +1 -1
- package/dist/openapi/models/UploadProbeNotApplicableResponse.d.ts +1 -1
- package/dist/openapi/models/UploadProbeNotApplicableResponse.js +1 -1
- package/dist/openapi/models/UploadProbeNotReadyResponse.d.ts +1 -1
- package/dist/openapi/models/UploadProbeNotReadyResponse.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 +10 -1
- package/dist/openapi/models/UploadProbeStatus.js +11 -2
- package/dist/openapi/models/UploadProbeSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/UploadProbeSuccessEnvelope.js +1 -1
- package/dist/openapi/models/UploadResponse.d.ts +1 -1
- package/dist/openapi/models/UploadResponse.js +1 -1
- package/dist/openapi/models/UploadSizeExceedsTierResponse.d.ts +1 -1
- package/dist/openapi/models/UploadSizeExceedsTierResponse.js +1 -1
- package/dist/openapi/models/UploadSource.d.ts +1 -1
- package/dist/openapi/models/UploadSource.js +1 -1
- package/dist/openapi/models/UploadSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/UploadSuccessEnvelope.js +1 -1
- package/dist/openapi/models/UploadThresholds.d.ts +1 -1
- package/dist/openapi/models/UploadThresholds.js +1 -1
- package/dist/openapi/models/UserTier.d.ts +1 -1
- package/dist/openapi/models/UserTier.js +1 -1
- package/dist/openapi/models/ValidationErrorEnvelope.d.ts +1 -1
- package/dist/openapi/models/ValidationErrorEnvelope.js +1 -1
- package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.d.ts +1 -1
- package/dist/openapi/models/ValidationErrorEnvelopeDetailsInner.js +1 -1
- package/dist/openapi/models/VerifyEmailRequest.d.ts +1 -1
- package/dist/openapi/models/VerifyEmailRequest.js +1 -1
- package/dist/openapi/models/WarningType.d.ts +1 -1
- package/dist/openapi/models/WarningType.js +1 -1
- package/dist/openapi/models/WebhookOperationContext.d.ts +1 -1
- package/dist/openapi/models/WebhookOperationContext.js +1 -1
- package/dist/openapi/models/WebhookPayload.d.ts +1 -1
- package/dist/openapi/models/WebhookPayload.js +1 -1
- package/dist/openapi/models/WorkflowArchiveResponse.d.ts +1 -1
- package/dist/openapi/models/WorkflowArchiveResponse.js +1 -1
- package/dist/openapi/models/WorkflowArchiveSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/WorkflowArchiveSuccessEnvelope.js +1 -1
- package/dist/openapi/models/WorkflowCancelBillingEffect.d.ts +1 -1
- package/dist/openapi/models/WorkflowCancelBillingEffect.js +1 -1
- package/dist/openapi/models/WorkflowCancelResponse.d.ts +1 -1
- package/dist/openapi/models/WorkflowCancelResponse.js +1 -1
- package/dist/openapi/models/WorkflowCancelSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/WorkflowCancelSuccessEnvelope.js +1 -1
- package/dist/openapi/models/WorkflowCreateRequest.d.ts +1 -1
- package/dist/openapi/models/WorkflowCreateRequest.js +1 -1
- package/dist/openapi/models/WorkflowCreateResponse.d.ts +1 -1
- package/dist/openapi/models/WorkflowCreateResponse.js +1 -1
- package/dist/openapi/models/WorkflowCreateSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/WorkflowCreateSuccessEnvelope.js +1 -1
- package/dist/openapi/models/WorkflowCreditSummary.d.ts +1 -1
- package/dist/openapi/models/WorkflowCreditSummary.js +1 -1
- package/dist/openapi/models/WorkflowDownloadResponse.d.ts +1 -1
- package/dist/openapi/models/WorkflowDownloadResponse.js +1 -1
- package/dist/openapi/models/WorkflowDownloadSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/WorkflowDownloadSuccessEnvelope.js +1 -1
- package/dist/openapi/models/WorkflowEdge.d.ts +1 -1
- package/dist/openapi/models/WorkflowEdge.js +1 -1
- package/dist/openapi/models/WorkflowExpiredResponse.d.ts +1 -1
- package/dist/openapi/models/WorkflowExpiredResponse.js +1 -1
- package/dist/openapi/models/WorkflowListResponse.d.ts +1 -1
- package/dist/openapi/models/WorkflowListResponse.js +1 -1
- package/dist/openapi/models/WorkflowListSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/WorkflowListSuccessEnvelope.js +1 -1
- package/dist/openapi/models/WorkflowPauseRequiredAction.d.ts +1 -1
- package/dist/openapi/models/WorkflowPauseRequiredAction.js +1 -1
- package/dist/openapi/models/WorkflowPausedDetail.d.ts +1 -1
- package/dist/openapi/models/WorkflowPausedDetail.js +1 -1
- package/dist/openapi/models/WorkflowPausedDetailLinks.d.ts +1 -1
- package/dist/openapi/models/WorkflowPausedDetailLinks.js +1 -1
- package/dist/openapi/models/WorkflowProcessing.d.ts +1 -1
- package/dist/openapi/models/WorkflowProcessing.js +1 -1
- package/dist/openapi/models/WorkflowRestoreResponse.d.ts +1 -1
- package/dist/openapi/models/WorkflowRestoreResponse.js +1 -1
- package/dist/openapi/models/WorkflowRestoreSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/WorkflowRestoreSuccessEnvelope.js +1 -1
- package/dist/openapi/models/WorkflowResumeResponse.d.ts +1 -1
- package/dist/openapi/models/WorkflowResumeResponse.js +1 -1
- package/dist/openapi/models/WorkflowResumeSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/WorkflowResumeSuccessEnvelope.js +1 -1
- package/dist/openapi/models/WorkflowSource.d.ts +1 -1
- package/dist/openapi/models/WorkflowSource.js +1 -1
- package/dist/openapi/models/WorkflowStatus.d.ts +1 -1
- package/dist/openapi/models/WorkflowStatus.js +1 -1
- package/dist/openapi/models/WorkflowStatusResponse.d.ts +1 -1
- package/dist/openapi/models/WorkflowStatusResponse.js +1 -1
- package/dist/openapi/models/WorkflowStatusSuccessEnvelope.d.ts +1 -1
- package/dist/openapi/models/WorkflowStatusSuccessEnvelope.js +1 -1
- package/dist/openapi/models/WorkflowSummary.d.ts +1 -1
- package/dist/openapi/models/WorkflowSummary.js +1 -1
- package/dist/openapi/models/WorkflowSummaryJob.d.ts +1 -1
- package/dist/openapi/models/WorkflowSummaryJob.js +1 -1
- package/dist/openapi/models/WorkflowWarning.d.ts +1 -1
- package/dist/openapi/models/WorkflowWarning.js +1 -1
- package/dist/openapi/models/WorkflowWarningSeverity.d.ts +1 -1
- package/dist/openapi/models/WorkflowWarningSeverity.js +1 -1
- package/dist/openapi/models/index.d.ts +1 -0
- package/dist/openapi/models/index.js +1 -0
- package/dist/openapi/runtime.d.ts +1 -1
- package/dist/openapi/runtime.js +1 -1
- package/dist/operations/compress.d.ts +4 -0
- package/dist/operations/compress.metadata.js +14 -0
- package/dist/operations/split.metadata.js +2 -2
- package/openapi/README.md +1 -1
- package/openapi/api.yaml +97 -10
- package/operation-capabilities/operation-capabilities.json +2 -32
- package/operations/schemas/compress.yaml +43 -0
- package/operations/schemas/convert.yaml +10 -0
- package/operations/schemas/split.yaml +5 -4
- package/operations/schemas/thumbnail.yaml +14 -3
- package/package.json +3 -3
|
@@ -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). **Free-text string fields: `x-string-vocabulary` (ticket [`Q79yjcFF`](https://trello.com/c/Q79yjcFF)).** A `type: string` field with no `enum` that names example values says, as data, what a client may do with them (the same marker is used in the AsyncAPI document): - `open` — a vocabulary that grows. Each published value keeps its meaning, the SET is not closed: switch on the values you know and handle an unknown one as the generic case (e.g. `ErrorEnvelope.error`). - `advisory` — explanatory text. Display or log it; **never switch on it** (e.g. `SseWorkflowTerminalData.reason`). - `none` — not a vocabulary at all (an expression or an identifier, e.g. `OptionSchema.pattern`). A field whose description hedges with \"common values\" or \"free-form\" must carry the marker; a test enforces it. **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.229.0
|
|
6
6
|
*
|
|
7
7
|
*
|
|
8
8
|
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
package/dist/openapi/runtime.js
CHANGED
|
@@ -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). **Free-text string fields: `x-string-vocabulary` (ticket [`Q79yjcFF`](https://trello.com/c/Q79yjcFF)).** A `type: string` field with no `enum` that names example values says, as data, what a client may do with them (the same marker is used in the AsyncAPI document): - `open` — a vocabulary that grows. Each published value keeps its meaning, the SET is not closed: switch on the values you know and handle an unknown one as the generic case (e.g. `ErrorEnvelope.error`). - `advisory` — explanatory text. Display or log it; **never switch on it** (e.g. `SseWorkflowTerminalData.reason`). - `none` — not a vocabulary at all (an expression or an identifier, e.g. `OptionSchema.pattern`). A field whose description hedges with \"common values\" or \"free-form\" must carry the marker; a test enforces it. **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.229.0
|
|
8
8
|
*
|
|
9
9
|
*
|
|
10
10
|
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
|
@@ -315,6 +315,10 @@ export interface CompressVideoOptions {
|
|
|
315
315
|
trim_end?: number;
|
|
316
316
|
speed?: number;
|
|
317
317
|
}
|
|
318
|
+
export interface CompressDocumentPdfOptions {
|
|
319
|
+
quality?: number;
|
|
320
|
+
max_image_dimension?: number;
|
|
321
|
+
}
|
|
318
322
|
export interface CompressDocumentOfficeOptions {
|
|
319
323
|
quality?: number;
|
|
320
324
|
strip_macros?: boolean;
|
|
@@ -396,6 +396,20 @@ export const compressMetadata = {
|
|
|
396
396
|
},
|
|
397
397
|
per_input_options: {},
|
|
398
398
|
},
|
|
399
|
+
document_pdf: {
|
|
400
|
+
availability: 'beta',
|
|
401
|
+
processing_class: {},
|
|
402
|
+
per_mime_availability: {},
|
|
403
|
+
options: {
|
|
404
|
+
quality: {
|
|
405
|
+
per_value_availability: {},
|
|
406
|
+
},
|
|
407
|
+
max_image_dimension: {
|
|
408
|
+
per_value_availability: {},
|
|
409
|
+
},
|
|
410
|
+
},
|
|
411
|
+
per_input_options: {},
|
|
412
|
+
},
|
|
399
413
|
document_office: {
|
|
400
414
|
processing_class: {},
|
|
401
415
|
per_mime_availability: {},
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Auto-generated from split.yaml -- do not edit
|
|
2
2
|
export const splitMetadata = {
|
|
3
|
-
availability: '
|
|
3
|
+
availability: 'stable',
|
|
4
4
|
sole_op: true,
|
|
5
5
|
features: {
|
|
6
6
|
silence_mode_audio: {
|
|
@@ -23,7 +23,7 @@ export const splitMetadata = {
|
|
|
23
23
|
per_input_options: {},
|
|
24
24
|
},
|
|
25
25
|
document_pdf: {
|
|
26
|
-
availability: '
|
|
26
|
+
availability: 'stable',
|
|
27
27
|
processing_class: {},
|
|
28
28
|
per_mime_availability: {},
|
|
29
29
|
options: {
|
package/openapi/README.md
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
- **Generator:** [openapi-generator-cli](https://openapi-generator.tech/) v7.21.0
|
|
11
11
|
(Docker image: `openapitools/openapi-generator-cli:v7.21.0`)
|
|
12
12
|
- **Generator preset:** `typescript-fetch`, models only
|
|
13
|
-
- **Files:**
|
|
13
|
+
- **Files:** 276
|
|
14
14
|
|
|
15
15
|
## Contents
|
|
16
16
|
|
package/openapi/api.yaml
CHANGED
|
@@ -103,7 +103,7 @@ info:
|
|
|
103
103
|
of truth instead of hardcoding magic numbers. A runtime
|
|
104
104
|
`GET /api/uploads/limits` endpoint for dynamic discovery
|
|
105
105
|
(per-tier / per-environment overrides) is a deferred follow-up.
|
|
106
|
-
version: 2.
|
|
106
|
+
version: 2.229.0
|
|
107
107
|
contact:
|
|
108
108
|
name: API Support
|
|
109
109
|
|
|
@@ -2094,6 +2094,38 @@ paths:
|
|
|
2094
2094
|
Caller resolves by switching to `re_encode_mode: auto`
|
|
2095
2095
|
or `always`. The compatibility-probe algorithm is
|
|
2096
2096
|
server-side and deliberately opaque per plan v5 §F8.2.
|
|
2097
|
+
- GIF too long (ticket `zfFnNYRY`, hub decision 715). A
|
|
2098
|
+
`convert` of video with `output_format: gif` whose KEPT window
|
|
2099
|
+
(input duration minus `trim_start` and `trim_end`) exceeds the
|
|
2100
|
+
option's `per_value_constraints.gif.max_kept_duration` (`PT10S`).
|
|
2101
|
+
`ValidationErrorEnvelope` with `error: "GIF_TOO_LONG"`; one
|
|
2102
|
+
`details[]` entry `{operation: "convert", option:
|
|
2103
|
+
"output_format", field: "kept_duration", message: "..."}`. The
|
|
2104
|
+
message steers: trim to 10 s, or choose `mp4` / `webm`. **The
|
|
2105
|
+
API waits for the upload probe** for a video->GIF convert whose
|
|
2106
|
+
source is an `upload`, for EVERY caller, signed in or not (owner
|
|
2107
|
+
decision 734): until the
|
|
2108
|
+
duration is known the create is answered `probe_pending` (retry
|
|
2109
|
+
it); after `video.probe_wait_bound_seconds` from the upload
|
|
2110
|
+
(`schemas/anonymous-policy.yaml`), or once the probe lands
|
|
2111
|
+
`ok` without a duration or `missing_metadata`, it proceeds and
|
|
2112
|
+
the worker enforces the same limit. A probe that lands `corrupt` or `unsupported_codec`
|
|
2113
|
+
keeps its terminal handling (surface it; do not retry), as
|
|
2114
|
+
`ProbePendingResponse` describes. Same `ProbePendingResponse` shape (`job_ref`,
|
|
2115
|
+
`Retry-After`). A source with no upload probe (`job_output`,
|
|
2116
|
+
`external_import`, `connection`) is not waited on: it is admitted
|
|
2117
|
+
and the worker enforces the limit.
|
|
2118
|
+
- Input password-protected. A job whose `upload` source has a
|
|
2119
|
+
completed probe with `probe_status: password_protected` is
|
|
2120
|
+
refused at create. `ValidationErrorEnvelope` with `error:
|
|
2121
|
+
"INPUT_PASSWORD_PROTECTED"`; one `details[]` entry `{field:
|
|
2122
|
+
"source", message: "..."}`. Client copy: "This PDF is
|
|
2123
|
+
password-protected. Remove the password and upload it again."
|
|
2124
|
+
A file that reaches a worker encrypted (no probe) fails
|
|
2125
|
+
`invalid_format`; the worker attaches `message_key`
|
|
2126
|
+
`document.pdf.password_protected`
|
|
2127
|
+
(`schemas/operation-message-keys.yaml`) once lambdas ships it —
|
|
2128
|
+
until then the bare `invalid_format` headline applies.
|
|
2097
2129
|
- Inputs not concat-uniform (ticket `MjzzPCWt`). Returned for a
|
|
2098
2130
|
job that routes to a processing class declaring
|
|
2099
2131
|
`input_uniformity` (today `merge.video.long_form_re_encode`,
|
|
@@ -2146,7 +2178,11 @@ paths:
|
|
|
2146
2178
|
`ProcessingClassExceedsBandResponse` (`violations[]`).
|
|
2147
2179
|
- `probe_pending` → `ProbePendingResponse` (`job_ref`, no
|
|
2148
2180
|
`violations[]`/`details[]`), emitted when the probe-pending
|
|
2149
|
-
gate is on and a job's upload has not yet been probed.
|
|
2181
|
+
gate is on and a job's upload has not yet been probed. The gate
|
|
2182
|
+
is on for a guest's video create, and for EVERY caller's
|
|
2183
|
+
video->GIF `convert` of an `upload` source (owner decision 734,
|
|
2184
|
+
so `GIF_TOO_LONG` is decided at create); in both cases only until
|
|
2185
|
+
`video.probe_wait_bound_seconds` after the upload.
|
|
2150
2186
|
|
|
2151
2187
|
The prior 422 shape is otherwise preserved unchanged — the
|
|
2152
2188
|
`details[]` / `violations[]` / `job_ref` required-field shapes
|
|
@@ -2279,6 +2315,17 @@ paths:
|
|
|
2279
2315
|
actual: 54000
|
|
2280
2316
|
ceiling: 43200
|
|
2281
2317
|
required_tier: "enterprise"
|
|
2318
|
+
gif_too_long:
|
|
2319
|
+
summary: convert video -> gif with a kept window over 10 s (zfFnNYRY)
|
|
2320
|
+
value:
|
|
2321
|
+
success: false
|
|
2322
|
+
error_type: "validation_error"
|
|
2323
|
+
error: "GIF_TOO_LONG"
|
|
2324
|
+
details:
|
|
2325
|
+
- operation: "convert"
|
|
2326
|
+
option: "output_format"
|
|
2327
|
+
field: "kept_duration"
|
|
2328
|
+
message: "A GIF can be at most 10 seconds; this keeps 42 seconds. Trim it to 10 seconds, or choose mp4 or webm."
|
|
2282
2329
|
inputs_not_concat_uniform:
|
|
2283
2330
|
summary: merge.video long_form_re_encode with one input lacking audio (MjzzPCWt)
|
|
2284
2331
|
value:
|
|
@@ -10777,7 +10824,7 @@ components:
|
|
|
10777
10824
|
- audio_to_video: Produce a video from an audio input plus an OPTIONAL still image overlay. Multi-input role-based with the first OPTIONAL role on the contract (`role: base` audio required, `role: overlay` image 0..1 — see `per_role_cardinality`). When overlay is omitted, the video uses a solid background colour. `availability: planned` — WITHDRAWN 2026-09-15: the measured encode cost (a per-second rate PLUS A FIXED COST) puts the advertised PT2H at more than twice the 900 s platform maximum (dropping the fixed cost moves the in-flight boundary by tens of seconds; figures in the CHANGELOG entry for 2.203.0, derived and tested from the divergence register). Returns `feature_not_available` (422) at workflow-create. An already-accepted workflow is not cancelled (availability is checked at create) and fails only when its output duration exceeds the derived ceiling (divergence register `evidence.derived.ceiling_s`) ON THE INPUT THE RATE WAS MEASURED WITH (a real photographic 1080p still plus looped real audio), where the measured rate plus the fixed cost reaches the worker's 600 s cap — the 60 s and 120 s measured cells both COMPLETED. The driver is the STILL'S RESOLUTION, not duration alone: a 4K still is roughly 4x the rate (unmeasured), which would put the boundary near a quarter of that, and this schema places no constraint on the overlay's resolution. Per ticket [`SlluxMBN`](https://trello.com/c/SlluxMBN) + ADR-0015 (introduces `per_role_cardinality` vocab).
|
|
10778
10825
|
- video_watermark: Apply an image overlay onto a base video via FFmpeg's `overlay` filter. Multi-input role-based (`role: base` video + `role: overlay` image, exactly one of each per `per_role_cardinality`). Re-encode required; audio stream-copy passthrough. Distinct from `image_watermark` (pure-Rust/image-only). `availability: planned` — WITHDRAWN 2026-09-15, operation AND `short_form`: a real 1080p source at the advertised PT5M / 500 MB was killed just past the worker's 600 s encode cap, no output. Returns `feature_not_available` (422) at workflow-create; an already-accepted workflow is not cancelled and fails only if it exceeds that cap; the kill is ONE measured point and nothing measured says where the boundary is. `long_form` and `multi_overlay_stack` were already `planned`. Per ticket [`4NrRPCgh`](https://trello.com/c/4NrRPCgh) + ADR-0013.
|
|
10779
10826
|
- video_text_watermark: Render a text overlay onto a base video via FFmpeg's `drawtext` filter. Single-input — text and styling in options. Same `watermark_mode` (single/tiled), anchor + margin vocab as `text_watermark`. Re-encode required; audio stream-copy passthrough. `availability: planned` — WITHDRAWN 2026-09-15, operation AND `short_form`: a real 1080p source at the advertised PT5M was killed just past the worker's 600 s encode cap. Returns `feature_not_available` (422) at workflow-create. ⚠️ This entry previously read "until Lambda ships", which was wrong in a way that mattered: the worker SHIPPED and runs — it is the CEILING that cannot be served. Per ticket [`4NrRPCgh`](https://trello.com/c/4NrRPCgh) + ADR-0013.
|
|
10780
|
-
- split: Fan one input file into N outputs across GIF / PDF / audio / video MIME families. Single-input per-mime-group catalog (mirrors merge/convert): GIF uses `frame_range` (REQUIRED) + `output_format`; PDF uses `page_range` OR `page_groups` (mutually exclusive); audio + video use a `mode` discriminator (interval/count/cut_points) + numeric-seconds wire format + `precision` flag (fast/exact). 200-output hard cap per ADR-0009 §D5 with per-mode preflight math; output naming `output-001..output-200`. Long-form video routes to a separate `split-video-fargate` worker via `processing_class`. `availability: beta` for the `audio` and `video` mime_groups (workers live on staging — shape-stable + opt-in, MUST NOT 422); video activates BOTH classes (`video.processing_class.short_form: beta` AND `long_form: beta` — `split-video-fargate` deployed + wired on staging; it stays `beta` until a PRODUCTION `customer_path` run is recorded in `availability/prod-verification-log.yaml` per [`rcwvUKhI`](https://trello.com/c/rcwvUKhI)). The `image_gif` mime_group
|
|
10827
|
+
- split: Fan one input file into N outputs across GIF / PDF / audio / video MIME families. Single-input per-mime-group catalog (mirrors merge/convert): GIF uses `frame_range` (REQUIRED) + `output_format`; PDF uses `page_range` OR `page_groups` (mutually exclusive); audio + video use a `mode` discriminator (interval/count/cut_points) + numeric-seconds wire format + `precision` flag (fast/exact). 200-output hard cap per ADR-0009 §D5 with per-mode preflight math; output naming `output-001..output-200`. Long-form video routes to a separate `split-video-fargate` worker via `processing_class`. `availability: beta` for the `audio` and `video` mime_groups (workers live on staging — shape-stable + opt-in, MUST NOT 422); video activates BOTH classes (`video.processing_class.short_form: beta` AND `long_form: beta` — `split-video-fargate` deployed + wired on staging; it stays `beta` until a PRODUCTION `customer_path` run is recorded in `availability/prod-verification-log.yaml` per [`rcwvUKhI`](https://trello.com/c/rcwvUKhI)). The operation, the `image_gif` mime_group and `document_pdf` are `stable` (prod-proven, owner decision 729, 2026-10-08); `audio` and `video` stay `beta` by their own tags. Per ticket [`vKI0CFDu`](https://trello.com/c/vKI0CFDu) + ADR-0014.
|
|
10781
10828
|
- passthrough: Inert lossless source operation. A single-input source job whose SOLE operation is `passthrough` emits its source bytes UNCHANGED — no compression, no Lambda. The API self-completes the job at publish (terminal output = the upload `{bucket, key}` unchanged). Its purpose is to feed an uploaded file into a multi-input operation LOSSLESSLY: because `JobInputV2.source` is narrowed to exclude upload-direct, an upload that must enter a `merge` / `archive` / `image_watermark` op enters via a `passthrough` source job referenced downstream by `{type: job_output, from: <id>}` — preserving billing / DAG / lineage. Distinct from `operations: []` (which keeps its implicit-compress meaning on a single-input upload job); `passthrough` is the EXPLICIT lossless path via the "non-empty `operations[]` without `compress` = compression opt-out" rule. Media-agnostic; no options. `availability: beta` — activated (the inputs[]-narrowing + passthrough self-complete mechanism is deployed API-side); workflow-create accepts `passthrough` source jobs and MUST NOT return `feature_not_available`. **Never published to SNS** — deliberately absent from the AsyncAPI routing enums (API self-completes; no `ops-passthrough` queue). Per ticket [`4som89Uh`](https://trello.com/c/4som89Uh) + ADR-0004 (planned→beta flip).
|
|
10782
10829
|
|
|
10783
10830
|
- transform: Geometric/orientation transform — v1 = rotate (0/90/180/270) + flip (none/horizontal/vertical/both), ADR-0026. Single-input; `produces: same_as_input` (geometry preserves format/container). Chainable (NOT sole_op); canonical single-job chain order is `transform → convert → compress → thumbnail` (geometry before encode/derive so downstream width/height/fit refer to the final frame). Media groups: image (still jpeg/png/webp + animated `image_gif`), video (mp4/webm), document (PDF page-rotate only — no flip); audio not supported. ALL groups `availability: planned` (epic `fhiWebI0`) — workflow-create returns `feature_not_available` (422) until per-media Lambdas ship. A no-op transform (`rotate: 0` + `flip: none`) is rejected as `invalid_options`. The public operation type is `transform`; the API resolves an internal per-media SNS routing sub-type (`transform_image` / `transform_video` / `transform_document`) — those sub-types are routing-only and are NOT part of this public enum. Per ADR-0026.
|
|
@@ -12149,15 +12196,22 @@ components:
|
|
|
12149
12196
|
enum:
|
|
12150
12197
|
- processed_base
|
|
12151
12198
|
- original
|
|
12152
|
-
default: processed_base
|
|
12153
12199
|
description: |
|
|
12154
12200
|
For **derived artifacts** (`thumbnail`, `split`): which canonical
|
|
12155
12201
|
composition node this artifact branches from. Symbolic-only for
|
|
12156
12202
|
v1 (no per-operation references — caller-visible op ids do not
|
|
12157
|
-
exist at submit time).
|
|
12158
|
-
|
|
12159
|
-
|
|
12160
|
-
- `
|
|
12203
|
+
exist at submit time). **The default depends on the operation**
|
|
12204
|
+
(owner decision 720, 2026-10-08): `thumbnail` defaults to
|
|
12205
|
+
`original`; `split` defaults to `processed_base`.
|
|
12206
|
+
- `processed_base`: the fully-processed base — post-everything,
|
|
12207
|
+
so the artifact carries the watermark + encode, and it runs
|
|
12208
|
+
after the chain.
|
|
12209
|
+
- `original`: the untouched source file. The artifact runs
|
|
12210
|
+
ALONGSIDE the chain (it does not wait for it). Each operation is
|
|
12211
|
+
judged at create against its own ceilings on its own input: a
|
|
12212
|
+
`base: original` thumbnail against the thumbnail ceilings on the
|
|
12213
|
+
original upload. The job still completes when every operation
|
|
12214
|
+
finishes and fails if any fails.
|
|
12161
12215
|
Ignored for chain operations (compress, convert, watermark, merge,
|
|
12162
12216
|
audio). The resolved branch point is echoed as
|
|
12163
12217
|
`CompositionPlanOperation.derived_from` (a `node_id`) in
|
|
@@ -13110,6 +13164,14 @@ components:
|
|
|
13110
13164
|
could not extract enough metadata to make a routing
|
|
13111
13165
|
decision. Caller may proceed at their own risk; the
|
|
13112
13166
|
workflow-create routing fallback applies.
|
|
13167
|
+
- `password_protected`: the file is encrypted (a PDF with a
|
|
13168
|
+
password), so it cannot be read. Caller removes the password
|
|
13169
|
+
and uploads again. Distinct from `corrupt`, which says the file
|
|
13170
|
+
is damaged (e2e prod proof, 2026-10-10).
|
|
13171
|
+
**Rollout order (strict readers exist):** the API and the SDKs
|
|
13172
|
+
accept this value BEFORE the prober emits it — a reader that maps
|
|
13173
|
+
the enum strictly (api's ProbeStatus, the generated Python SDK)
|
|
13174
|
+
fails to decode an unknown value despite `x-enum-openness: open`.
|
|
13113
13175
|
# OPEN. `ok` is the only proceed value and everything else is a reason not to,
|
|
13114
13176
|
# so a consumer branches on `ok` rather than enumerating failures. A new
|
|
13115
13177
|
# failure reason is additive and an old consumer treats it correctly as
|
|
@@ -13120,6 +13182,7 @@ components:
|
|
|
13120
13182
|
- corrupt
|
|
13121
13183
|
- unsupported_codec
|
|
13122
13184
|
- missing_metadata
|
|
13185
|
+
- password_protected
|
|
13123
13186
|
|
|
13124
13187
|
UploadProbeProcessingClass:
|
|
13125
13188
|
type: string
|
|
@@ -14468,7 +14531,9 @@ components:
|
|
|
14468
14531
|
`decode_failed` (input unreadable/corrupt),
|
|
14469
14532
|
`output_too_large` (output exceeded the size limit; NOT for a
|
|
14470
14533
|
same-format `compress`, which returns the original with
|
|
14471
|
-
`already_optimal` instead — owner decision 645(4)
|
|
14534
|
+
`already_optimal` instead — owner decision 645(4) — but only when
|
|
14535
|
+
the original satisfies EVERY option the request set; see
|
|
14536
|
+
`OperationMetrics.already_optimal` in the AsyncAPI contract),
|
|
14472
14537
|
`missing_source` (source not found — fail-fast),
|
|
14473
14538
|
`invalid_key` (storage key invalid),
|
|
14474
14539
|
`processing_failed` (non-specific processing failure),
|
|
@@ -14574,7 +14639,11 @@ components:
|
|
|
14574
14639
|
resolved `same_format` route (`output_format` original, absent, or
|
|
14575
14640
|
equal to the input's format; not the format-change facade, where
|
|
14576
14641
|
the original is not what was asked for). A same-format compress
|
|
14577
|
-
that cannot shrink the file returns this,
|
|
14642
|
+
that cannot shrink the file returns this, not `output_too_large` —
|
|
14643
|
+
but ONLY when the original satisfies EVERY option the request set
|
|
14644
|
+
(e.g. not when it asks for a trim, a different channel count, sample
|
|
14645
|
+
rate or bitrate, or new image dimensions); otherwise the failure is
|
|
14646
|
+
`output_too_large` (CvaZWNzO).
|
|
14578
14647
|
⚠️ **Today this holds for SHORT-FORM compress only.** Long-form
|
|
14579
14648
|
compress still fails `output_too_large` until lambdas ships its
|
|
14580
14649
|
long-form copy path; do not promise "already optimised" or "no
|
|
@@ -16890,6 +16959,24 @@ components:
|
|
|
16890
16959
|
by `make check-per-value-availability` (CI guard, ticket
|
|
16891
16960
|
[I17 `0gwtwCav`](https://trello.com/c/0gwtwCav)). Runtime
|
|
16892
16961
|
emission lands with I3.
|
|
16962
|
+
per_value_constraints:
|
|
16963
|
+
type: object
|
|
16964
|
+
description: |
|
|
16965
|
+
Per-enum-value limits, only meaningful when `type: enum`. Keys
|
|
16966
|
+
MUST be a subset of `values[]`; each entry holds limits that
|
|
16967
|
+
apply only when the request selects that value. Today one
|
|
16968
|
+
constraint: `max_kept_duration` (ISO 8601) — the input's
|
|
16969
|
+
duration minus `trim_start` and `trim_end` may not exceed it;
|
|
16970
|
+
refused at create with `GIF_TOO_LONG` for `convert` video
|
|
16971
|
+
`output_format: gif` (card `zfFnNYRY`). See FORMAT.md
|
|
16972
|
+
§`per_value_constraints`.
|
|
16973
|
+
additionalProperties:
|
|
16974
|
+
type: object
|
|
16975
|
+
additionalProperties: false
|
|
16976
|
+
properties:
|
|
16977
|
+
max_kept_duration:
|
|
16978
|
+
type: string
|
|
16979
|
+
format: duration
|
|
16893
16980
|
per_value_depends_on:
|
|
16894
16981
|
type: object
|
|
16895
16982
|
description: |
|
|
@@ -643,7 +643,7 @@
|
|
|
643
643
|
"image",
|
|
644
644
|
"video"
|
|
645
645
|
],
|
|
646
|
-
"availability": "
|
|
646
|
+
"availability": "stable",
|
|
647
647
|
"input": {
|
|
648
648
|
"model": "single"
|
|
649
649
|
},
|
|
@@ -734,36 +734,6 @@
|
|
|
734
734
|
"video"
|
|
735
735
|
],
|
|
736
736
|
"availability": "stable",
|
|
737
|
-
"excludes": [
|
|
738
|
-
{
|
|
739
|
-
"availability": "stable",
|
|
740
|
-
"constraint_id": "thumbnail.requires_chain_predecessor",
|
|
741
|
-
"message": "thumbnail must follow a compress or convert operation.",
|
|
742
|
-
"when": {
|
|
743
|
-
"all": [
|
|
744
|
-
{
|
|
745
|
-
"not": {
|
|
746
|
-
"any": [
|
|
747
|
-
{
|
|
748
|
-
"opSelected": "compress"
|
|
749
|
-
},
|
|
750
|
-
{
|
|
751
|
-
"opSelected": "convert"
|
|
752
|
-
}
|
|
753
|
-
]
|
|
754
|
-
}
|
|
755
|
-
},
|
|
756
|
-
{
|
|
757
|
-
"not": {
|
|
758
|
-
"equals": "document",
|
|
759
|
-
"field": "input_mime_group"
|
|
760
|
-
}
|
|
761
|
-
}
|
|
762
|
-
]
|
|
763
|
-
},
|
|
764
|
-
"wire_code": "INVALID_OPERATION_ORDER"
|
|
765
|
-
}
|
|
766
|
-
],
|
|
767
737
|
"input": {
|
|
768
738
|
"model": "single"
|
|
769
739
|
},
|
|
@@ -898,5 +868,5 @@
|
|
|
898
868
|
"isAnimated": "maybe"
|
|
899
869
|
}
|
|
900
870
|
},
|
|
901
|
-
"schema_version": "2.
|
|
871
|
+
"schema_version": "2.229.0"
|
|
902
872
|
}
|
|
@@ -1545,6 +1545,49 @@ operation:
|
|
|
1545
1545
|
# rather than the generic unsupported-input reject. EPUB/office/ODF compress and
|
|
1546
1546
|
# PDF thumbnail/split/convert/transform are UNTOUCHED (Ghostscript's other uses,
|
|
1547
1547
|
# incl. PDF thumbnails, migrate to Poppler on the lambdas side — no contract change).
|
|
1548
|
+
#
|
|
1549
|
+
# RE-DECLARED 2026-10-08 (owner decision 729 item 1; card U5EPPRPc) on a
|
|
1550
|
+
# permissive stack: qpdf + pikepdf + Pillow (spike: vm_shared/compression_project/
|
|
1551
|
+
# 10_Now/2026-10-08-pdf-compress-spike.md). Re-encodes embedded images (JPEG at
|
|
1552
|
+
# `quality`, longest side capped at `max_image_dimension`) plus a lossless
|
|
1553
|
+
# structural pass, behind a never-larger guard (a result that is not smaller
|
|
1554
|
+
# returns the input, `already_optimal`). Spike: 65-90% on image-heavy and
|
|
1555
|
+
# scanned PDFs at SSIM ~0.997, 1-15% on text-only. `planned` until lambdas builds
|
|
1556
|
+
# the worker and api routes it (co-land: contracts -> lambdas -> api -> e2e).
|
|
1557
|
+
# ONLY the options the worker will read are declared.
|
|
1558
|
+
document_pdf:
|
|
1559
|
+
# planned -> beta 2026-10-10 (owner decision 744): worker live on prod
|
|
1560
|
+
# (gisl-prod-euw1-compression-document = documents/v2.1.0, git-a396b6a);
|
|
1561
|
+
# staging proof in availability/staging-verification-log.yaml. A signed PDF
|
|
1562
|
+
# comes back unchanged (already_optimal); an encrypted PDF fails invalid_format.
|
|
1563
|
+
availability: beta
|
|
1564
|
+
mimes:
|
|
1565
|
+
- application/pdf
|
|
1566
|
+
# Input ceiling (lambdas, 2026-10-09: the worker CLI takes it as a REQUIRED
|
|
1567
|
+
# --max-input-bytes and holds no number of its own). 200 MiB, the value every
|
|
1568
|
+
# other compress document group declares. Not measured on the PDF worker
|
|
1569
|
+
# (not built yet), so `unproven` until lambdas' corner run.
|
|
1570
|
+
ceiling_basis: # 607(d): proven at the declared value, or not yet (FORMAT.md §ceiling_basis)
|
|
1571
|
+
max_input_size_bytes: unproven
|
|
1572
|
+
max_input_size_bytes: 209715200 # 200 MiB
|
|
1573
|
+
options:
|
|
1574
|
+
quality:
|
|
1575
|
+
type: integer
|
|
1576
|
+
min: 1
|
|
1577
|
+
max: 100
|
|
1578
|
+
default: 70
|
|
1579
|
+
description: >-
|
|
1580
|
+
JPEG quality for the images inside the PDF (1 = smallest, 100 = best).
|
|
1581
|
+
Text and vector content are not re-encoded.
|
|
1582
|
+
max_image_dimension:
|
|
1583
|
+
type: integer
|
|
1584
|
+
min: 64
|
|
1585
|
+
max: 10000
|
|
1586
|
+
default: 1600
|
|
1587
|
+
description: >-
|
|
1588
|
+
Largest width or height, in pixels, for each image inside the PDF; larger
|
|
1589
|
+
images are scaled down, keeping their shape. Smaller images are left as
|
|
1590
|
+
they are.
|
|
1548
1591
|
|
|
1549
1592
|
document_office:
|
|
1550
1593
|
mimes:
|
|
@@ -380,6 +380,16 @@ operation:
|
|
|
380
380
|
type: enum
|
|
381
381
|
values: [mp4, webm, ogg, gif, mov, mkv]
|
|
382
382
|
required: true
|
|
383
|
+
# GIF LENGTH CAP (hub decision 715 applying owner decision 698(6), card
|
|
384
|
+
# zfFnNYRY): a GIF's KEPT window (input duration minus trim_start and
|
|
385
|
+
# trim_end) may not exceed PT10S — at the 12 fps / 480 px defaults that
|
|
386
|
+
# is ~7 MB (lambdas: ~0.71 MB/s), inside Slack/Discord's ~8 MB. Refused at
|
|
387
|
+
# create with GIF_TOO_LONG; steer: trim to 10 s, or choose mp4/webm
|
|
388
|
+
# (animated WebP from video is not offered: card d7KfRjvw). FORMAT.md
|
|
389
|
+
# §per_value_constraints. The worker backstops the same value.
|
|
390
|
+
per_value_constraints:
|
|
391
|
+
gif:
|
|
392
|
+
max_kept_duration: "PT10S"
|
|
383
393
|
# The video codec is DETERMINED by the target container, NOT a caller
|
|
384
394
|
# choice: the convert-video worker hard-wires it per container
|
|
385
395
|
# (mp4 -> H.264/libx264, webm -> VP9, ogg -> Theora, gif -> palette,
|
|
@@ -2,7 +2,7 @@ schema_version: "2.0.0"
|
|
|
2
2
|
|
|
3
3
|
operation:
|
|
4
4
|
type: split
|
|
5
|
-
availability:
|
|
5
|
+
availability: stable # 2026-10-08 (decision 729): the OPERATION is stable so a stable group can resolve stable; every other group pins its own availability below
|
|
6
6
|
description: |
|
|
7
7
|
Fan one input file into N outputs across GIF, PDF, audio, and
|
|
8
8
|
video MIME families. Single-input — one input file per job, fanned
|
|
@@ -85,8 +85,9 @@ operation:
|
|
|
85
85
|
`availability: beta` for the `audio` and `video` mime_groups
|
|
86
86
|
(shape-stable + opt-in, MUST NOT 422). Video activates **both
|
|
87
87
|
classes**: `video.processing_class.short_form` AND `long_form` are
|
|
88
|
-
`beta`. The `document_pdf` mime_group is `
|
|
89
|
-
`image_gif` is `stable` (GIF to frames,
|
|
88
|
+
`beta`. The `document_pdf` mime_group is `stable` (owner decision 729,
|
|
89
|
+
prod-proven 2026-10-08), and `image_gif` is `stable` (GIF to frames,
|
|
90
|
+
prod-proven 2026-10-08). A value or class
|
|
90
91
|
still tagged `planned` (e.g. `precision: exact`) is refused with
|
|
91
92
|
`feature_not_available` (422).
|
|
92
93
|
default: false
|
|
@@ -139,7 +140,7 @@ operation:
|
|
|
139
140
|
|
|
140
141
|
# PDF base — page-split via qpdf or pdftk equivalent.
|
|
141
142
|
document_pdf:
|
|
142
|
-
availability:
|
|
143
|
+
availability: stable # owner decision 729 item 2: PROD proof of both modes (e2e, 2026-10-08); beta since 2026-10-01 (jGTLrpzK)
|
|
143
144
|
mimes:
|
|
144
145
|
- application/pdf
|
|
145
146
|
# Byte bound (lambdas, 2026-10-01): the worker downloads the PDF to /tmp
|
|
@@ -5,9 +5,9 @@ operation:
|
|
|
5
5
|
description: >-
|
|
6
6
|
Resize an image to specific dimensions, or extract a preview frame/page from a video
|
|
7
7
|
or document. For images this is a full resizer (1-16384px), not just small previews.
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
A thumbnail can be the only operation on an image, video or document upload. In a job with other operations
|
|
9
|
+
it is made from the ORIGINAL file by default, alongside them; set `base:
|
|
10
|
+
processed_base` to make it from the processed result instead.
|
|
11
11
|
default: false
|
|
12
12
|
input_model: single
|
|
13
13
|
|
|
@@ -33,6 +33,17 @@ operation:
|
|
|
33
33
|
# is NOT the real limit — e.g. 6000x6000 (36MP) is rejected though each axis
|
|
34
34
|
# is < 16384; 6000x2000 (12MP) is fine. The worker enforces this regardless.
|
|
35
35
|
max_output_pixels: 16000000
|
|
36
|
+
# INPUT CEILINGS (owner decision 720, 2026-10-08): a thumbnail may now be the
|
|
37
|
+
# first operation, so it is judged on the ORIGINAL upload at create. Values
|
|
38
|
+
# mirror compress.image (370 MB / 90 MP, lambdas' 607(d) corner run on the
|
|
39
|
+
# COMPRESSION worker) — lambdas states they fit thumbnail-image's /tmp and its
|
|
40
|
+
# 100 MP decode cap, with no worker change. Not measured on THIS worker, so
|
|
41
|
+
# `unproven`.
|
|
42
|
+
ceiling_basis: # 607(d): proven at the declared value, or not yet (FORMAT.md §ceiling_basis)
|
|
43
|
+
max_input_size_bytes: unproven
|
|
44
|
+
max_input_pixels: unproven
|
|
45
|
+
max_input_size_bytes: 370000000
|
|
46
|
+
max_input_pixels: 90000000
|
|
36
47
|
options:
|
|
37
48
|
# IMAGE input is a full resizer (Lanczos): width/height accept the
|
|
38
49
|
# worker's real 1-16384px range (area-capped above) — this op is the
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@giveitsmaller/contracts",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Generated contract types for GISL (Give It Smaller). Generated from compression_contracts spec v2.
|
|
5
|
-
"gislContractsSpec": "v2.
|
|
3
|
+
"version": "0.91.0",
|
|
4
|
+
"description": "Generated contract types for GISL (Give It Smaller). Generated from compression_contracts spec v2.229.0.",
|
|
5
|
+
"gislContractsSpec": "v2.229.0",
|
|
6
6
|
"license": "Apache-2.0",
|
|
7
7
|
"homepage": "https://docs.giveitsmaller.com",
|
|
8
8
|
"bugs": {
|