API Reference
Types
Key exported TypeScript types from @secured-ai/core.
All public types are exported from the package root:
import type {
EntityType,
PrivacyClientConfig,
PrivacyScanResult,
TextReview,
FinalizedTextReview,
PrivacyVaultConfig,
} from '@secured-ai/core'Core detection types
EntityType
EntityType is the union of all supported built-in entity kinds, including values such as PERSON, EMAIL, PHONE, SSN, ORG, GPE, LOC, ACCOUNT_NUMBER, CREDIT_CARD_EXPIRY, and CUSTOM.
See Entity Types for the full list.
DetectionSource
type DetectionSource =
| 'regex-patterns'
| 'compromise-nlp'
| 'compromise-regex'
| 'huggingface'
| 'gliner'
| 'custom'SensitiveEntity
interface SensitiveEntity {
text: string
label?: string
start: number
end: number
confidence: number
type: EntityType
source?: string
fileId?: string
fileName?: string
}ExtendedSensitiveEntity
interface ExtendedSensitiveEntity extends SensitiveEntity {
detectionSource: DetectionSource
detectionMethod?: string
}PrivacyScanResult
interface PrivacyScanResult {
entities: ExtendedSensitiveEntity[]
sensitiveEntities: SensitiveEntity[]
processingTime: number
sourceStats: Record<DetectionSource, number>
isClean: boolean
}Obfuscation and session types
ObfuscationResult
interface ObfuscationResult {
processed: string
sessionId: string
hasSensitiveData: boolean
}ObfuscationOptions
interface ObfuscationOptions {
threadId?: string | null
}RestorationResult
interface RestorationResult {
restored: string
mappingsApplied: number
success: boolean
}SessionMapping
interface SessionMapping {
id: string
original: string
replacement: string
entityType: EntityType
position: { start: number; end: number }
}PrivacySession
interface PrivacySession {
sessionId: string
mappings: SessionMapping[]
createdAt: Date
processedText: string
originalText: string
}SerializedPrivacySession
interface SerializedPrivacySession {
sessionId: string
mappings: SessionMapping[]
createdAt: string
processedText: string
originalText: string
}Text review types
TextReviewOccurrence
interface TextReviewOccurrence {
start: number
end: number
text: string
}TextReviewItem
interface TextReviewItem extends SensitiveEntity {
id: string
replacement: string
defaultReplacement: string
isRemoved: boolean
isCustomAdded: boolean
occurrences: TextReviewOccurrence[]
}TextReview
interface TextReview {
originalText: string
items: TextReviewItem[]
}FinalizedTextReview
interface FinalizedTextReview {
processedText: string
entities: SensitiveEntity[]
mappings: SessionMapping[]
sessionId: string
session: PrivacySession
serializedSession: SerializedPrivacySession
hasSensitiveData: boolean
}Client configuration types
EngineConfig
interface EngineConfig {
regex?: boolean
nlp?: boolean
ml?: boolean
gliner?: boolean
custom?: boolean
}PrivacyClientConfig
interface PrivacyClientConfig {
baseUrl: string
sdkAccessToken: string
engines?: EngineConfig
confidenceThreshold?: number
maxProcessingTime?: number
disableGLiNERChunking?: boolean
replacementPools?: Partial<Record<EntityType, string[]>>
debug?: boolean
onInitProgress?: (event: InitProgressEvent) => void
vault?: PrivacyVaultConfig
}baseUrl and sdkAccessToken are required for browser SDK initialization. Create the token in Settings > SDK Access Tokens and restrict it to the browser origins that are allowed to initialize the SDK.
InitProgressEvent
interface InitProgressEvent {
engine: string
stage: 'downloading' | 'loading' | 'ready'
percent: number
}InitProgress
interface InitProgress {
overall: number
engines: Record<string, number>
}CustomPattern
interface CustomPattern {
name: string
pattern: RegExp
entityType: EntityType
confidence?: number
}ReplacementPoolConfig
interface ReplacementPoolConfig {
[entityType: string]: string[] | undefined
}Engine implementation types
DetectionResult
interface DetectionResult {
entities: ExtendedSensitiveEntity[]
processingTime: number
source: DetectionSource
}IDetectionEngine
interface IDetectionEngine {
initialize(onProgress?: (event: InitProgressEvent) => void): Promise<void>
detect(text: string): Promise<DetectionResult>
isReady(): boolean
getName(): string
}IEntityValidator
interface IEntityValidator {
validate(entityType: EntityType, text: string): boolean
}File types
FileProcessingResult
interface FileProcessingResult {
entities: ExtendedSensitiveEntity[]
text: string
processingTime: number
fileType: SupportedFileType
}SupportedFileType
type SupportedFileType = 'pdf' | 'docx' | 'xlsx' | 'csv' | 'txt' | 'json' | 'image'FileObfuscationOptions
interface FileObfuscationOptions {
entities?: SensitiveEntity[]
extractedText?: string
}Vault types
PrivacyVaultConfig
interface PrivacyVaultConfig {
repository: VaultRepository
masterKey: RuntimeValue<string>
cache?: VaultCache
cacheNamespace?: RuntimeValue<string>
crypto?: VaultCrypto
}VaultEntry
interface VaultEntry {
original: string
replacement: string
type: string
}EncryptedVaultPayload
interface EncryptedVaultPayload {
saltB64: string
ivB64: string
ciphertextB64: string
}EncryptedVaultSnapshot
interface EncryptedVaultSnapshot {
scope: 'global' | 'thread'
threadId?: string
version: string
updatedAt: string
payload: EncryptedVaultPayload
}VaultSnapshot
interface VaultSnapshot {
scope: 'global' | 'thread'
threadId?: string
entries: VaultEntry[]
version: string
updatedAt: string
}VaultSnapshotState
interface VaultSnapshotState extends VaultSnapshot {
fetchedAt: string
isStale: boolean
}VaultRepositoryRequestContext
interface VaultRepositoryRequestContext {
cacheNamespace: string | null
}VaultRepository
interface VaultRepository {
getGlobalSnapshot(
context: VaultRepositoryRequestContext,
): Promise<EncryptedVaultSnapshot | null>
getThreadSnapshot?(
threadId: string,
context: VaultRepositoryRequestContext,
): Promise<EncryptedVaultSnapshot | null>
}VaultCrypto
interface VaultCrypto {
encryptEntries(
entries: VaultEntry[],
masterKey: string,
): Promise<EncryptedVaultPayload>
decryptEntries(
payload: EncryptedVaultPayload,
masterKey: string,
): Promise<VaultEntry[]>
}VaultCache
interface VaultCache {
get(key: string): Promise<string | null>
set(key: string, value: string): Promise<void>
delete(key: string): Promise<void>
clear(): Promise<void>
}RuntimeValue<T>
type RuntimeValue<T> = T | (() => Promise<T | null>)VaultStatus
interface VaultStatus {
isEnabled: boolean
isInitialized: boolean
activeThreadId: string | null
cacheNamespace: string | null
hasGlobalSnapshot: boolean
isGlobalSnapshotStale: boolean
}VaultResolveOptions
interface VaultResolveOptions {
threadId?: string | null
}