API Module - TypeScript Functions

Angular Admin Panel Documentation

API Module - TypeScript Functions

🔑 TokensComponent Functions

Advanced component for managing API tokens with security monitoring, analytics, and comprehensive permission management.

Component Properties

export class TokensComponent implements OnInit, OnDestroy {
  // Data Properties
  tokens: ApiToken[] = [];
  filteredTokens: ApiToken[] = [];
  selectedToken: ApiToken | null = null;
  currentUser: User | null = null;
  loading: boolean = false;
  error: string | null = null;
  
  // Filter and Search Properties
  searchTerm: string = '';
  statusFilter: TokenStatus = TokenStatus.ALL;
  permissionFilter: string = '';
  expirationFilter: ExpirationFilter = ExpirationFilter.ALL;
  
  // Pagination Properties
  currentPage: number = 1;
  itemsPerPage: number = 10;
  totalItems: number = 0;
  
  // Sorting Properties
  sortField: string = 'createdAt';
  sortDirection: 'asc' | 'desc' = 'desc';
  
  // UI State Properties
  showTokenDetails: boolean = false;
  showRevokeModal: boolean = false;
  showRenewModal: boolean = false;
  showPermissionsModal: boolean = false;
  isEditing: boolean = false;
  
  // Analytics Properties
  usageStatistics: TokenUsageStatistics[] = [];
  selectedPeriod: TimePeriod = TimePeriod.LAST_30_DAYS;
  
  // Security Properties
  securityEvents: SecurityEvent[] = [];
  showSecurityAlert: boolean = false;
}

🔄 Lifecycle Methods

/**
 * Component initialization
 */
ngOnInit(): void

/**
 * Component cleanup
 */
ngOnDestroy(): void

/**
 * After view initialization
 */
ngAfterViewInit(): void

📥 Data Loading Methods

/**
 * Load all API tokens
 */
loadTokens(): void

/**
 * Load tokens with pagination
 * @param page - Page number to load
 * @param pageSize - Number of items per page
 */
loadTokensWithPagination(page: number, pageSize: number): void

/**
 * Load token by ID
 * @param tokenId - Token ID to load
 */
loadTokenById(tokenId: string): void

/**
 * Refresh token list
 */
refreshTokens(): void

/**
 * Load token usage statistics
 * @param tokenId - Token ID
 * @param period - Time period for statistics
 */
loadTokenUsage(tokenId: string, period: TimePeriod): void

/**
 * Load security events for token
 * @param tokenId - Token ID
 */
loadSecurityEvents(tokenId: string): void

/**
 * Load active sessions for token
 * @param tokenId - Token ID
 */
loadActiveSessions(tokenId: string): void

🔑 Token Management Methods

/**
 * View token details
 * @param token - Token to view
 */
viewTokenDetails(token: ApiToken): void

/**
 * Revoke API token
 * @param tokenId - Token ID to revoke
 * @param reason - Revocation reason
 */
revokeToken(tokenId: string, reason: string): void

/**
 * Renew API token
 * @param tokenId - Token ID to renew
 * @param newExpiration - New expiration date
 */
renewToken(tokenId: string, newExpiration: Date): void

/**
 * Rotate token (generate new token with same permissions)
 * @param tokenId - Token ID to rotate
 */
rotateToken(tokenId: string): void

/**
 * Suspend token temporarily
 * @param tokenId - Token ID to suspend
 * @param reason - Suspension reason
 */
suspendToken(tokenId: string, reason: string): void

/**
 * Reactivate suspended token
 * @param tokenId - Token ID to reactivate
 */
reactivateToken(tokenId: string): void

/**
 * Update token permissions
 * @param tokenId - Token ID
 * @param permissions - New permissions
 */
updateTokenPermissions(tokenId: string, permissions: ApiPermission[]): void

/**
 * Update token metadata
 * @param tokenId - Token ID
 * @param metadata - Updated metadata
 */
updateTokenMetadata(tokenId: string, metadata: TokenMetadata): void

🔐 Permission Management Methods

/**
 * Open permissions modal
 * @param token - Token to manage permissions for
 */
openPermissionsModal(token: ApiToken): void

/**
 * Close permissions modal
 */
closePermissionsModal(): void

/**
 * Add permission to token
 * @param tokenId - Token ID
 * @param permission - Permission to add
 */
addPermission(tokenId: string, permission: ApiPermission): void

/**
 * Remove permission from token
 * @param tokenId - Token ID
 * @param permissionId - Permission ID to remove
 */
removePermission(tokenId: string, permissionId: string): void

/**
 * Update permission level
 * @param tokenId - Token ID
 * @param permissionId - Permission ID
 * @param level - New permission level
 */
updatePermissionLevel(tokenId: string, permissionId: string, level: PermissionLevel): void

/**
 * Bulk update permissions
 * @param tokenId - Token ID
 * @param permissions - Array of permissions
 */
bulkUpdatePermissions(tokenId: string, permissions: ApiPermission[]): void

🔍 Search and Filter Methods

/**
 * Search tokens by term
 * @param searchTerm - Search term
 */
searchTokens(searchTerm: string): void

/**
 * Filter tokens by status
 * @param status - Token status
 */
filterByStatus(status: TokenStatus): void

/**
 * Filter tokens by permission
 * @param permission - Permission type
 */
filterByPermission(permission: string): void

/**
 * Filter tokens by expiration
 * @param filter - Expiration filter
 */
filterByExpiration(filter: ExpirationFilter): void

/**
 * Apply all filters
 */
applyFilters(): void

/**
 * Clear all filters
 */
clearFilters(): void

/**
 * Reset search and filters
 */
resetFilters(): void

📊 Analytics and Monitoring Methods

/**
 * Load usage analytics for period
 * @param period - Time period
 */
loadUsageAnalytics(period: TimePeriod): void

/**
 * Get token performance metrics
 * @param tokenId - Token ID
 */
getTokenPerformanceMetrics(tokenId: string): void

/**
 * Monitor real-time token usage
 * @param tokenId - Token ID
 */
monitorRealTimeUsage(tokenId: string): void

/**
 * Generate usage report
 * @param tokenIds - Array of token IDs
 * @param period - Reporting period
 */
generateUsageReport(tokenIds: string[], period: TimePeriod): void

/**
 * Export usage data
 * @param format - Export format (CSV, JSON, PDF)
 */
exportUsageData(format: ExportFormat): void

/**
 * Get rate limiting statistics
 * @param tokenId - Token ID
 */
getRateLimitingStats(tokenId: string): void

🛡️ Security Methods

/**
 * Monitor security events
 */
monitorSecurityEvents(): void

/**
 * Handle security alert
 * @param event - Security event
 */
handleSecurityAlert(event: SecurityEvent): void

/**
 * Block suspicious IP
 * @param tokenId - Token ID
 * @param ipAddress - IP address to block
 */
blockSuspiciousIP(tokenId: string, ipAddress: string): void

/**
 * Enable two-factor authentication for token
 * @param tokenId - Token ID
 */
enableTwoFactorAuth(tokenId: string): void

/**
 * Set IP restrictions
 * @param tokenId - Token ID
 * @param ipRestrictions - IP restriction rules
 */
setIPRestrictions(tokenId: string, ipRestrictions: IPRestriction[]): void

/**
 * Configure rate limits
 * @param tokenId - Token ID
 * @param rateLimits - Rate limit configuration
 */
configureRateLimits(tokenId: string, rateLimits: RateLimit[]): void

🖱️ UI Interaction Methods

/**
 * Toggle token details view
 * @param token - Token to toggle
 */
toggleTokenDetails(token: ApiToken): void

/**
 * Open revoke confirmation modal
 * @param token - Token to revoke
 */
openRevokeModal(token: ApiToken): void

/**
 * Close revoke modal
 */
closeRevokeModal(): void

/**
 * Open renewal modal
 * @param token - Token to renew
 */
openRenewModal(token: ApiToken): void

/**
 * Close renewal modal
 */
closeRenewModal(): void

/**
 * Copy token to clipboard
 * @param token - Token to copy
 */
copyTokenToClipboard(token: string): void

/**
 * Show token QR code
 * @param token - Token for QR code
 */
showTokenQRCode(token: string): void

➕ AddtokenComponent Functions

Multi-step wizard component for creating new API tokens with comprehensive configuration options and security settings.

Component Properties

export class AddtokenComponent implements OnInit {
  // Form Properties
  tokenForm: FormGroup;
  permissionsForm: FormGroup;
  restrictionsForm: FormGroup;
  
  // Data Properties
  availablePermissions: ApiPermission[] = [];
  selectedPermissions: ApiPermission[] = [];
  availableEndpoints: ApiEndpoint[] = [];
  selectedEndpoints: ApiEndpoint[] = [];
  
  // UI State Properties
  currentStep: number = 1;
  totalSteps: number = 4;
  loading: boolean = false;
  error: string | null = null;
  isSubmitting: boolean = false;
  
  // Generated Token Properties
  generatedToken: string | null = null;
  tokenSecret: string | null = null;
  showTokenDetails: boolean = false;
  
  // Configuration Properties
  expirationOptions: ExpirationOption[] = [];
  rateLimitOptions: RateLimitOption[] = [];
  ipRestrictionEnabled: boolean = false;
}

🔄 Lifecycle Methods

/**
 * Component initialization
 */
ngOnInit(): void

/**
 * Component cleanup
 */
ngOnDestroy(): void

📝 Form Management Methods

/**
 * Initialize token creation form
 */
initializeForm(): void

/**
 * Initialize permissions form
 */
initializePermissionsForm(): void

/**
 * Initialize restrictions form
 */
initializeRestrictionsForm(): void

/**
 * Validate current step
 */
validateCurrentStep(): boolean

/**
 * Move to next step
 */
nextStep(): void

/**
 * Move to previous step
 */
previousStep(): void

/**
 * Submit token creation form
 */
submitForm(): void

/**
 * Reset form to initial state
 */
resetForm(): void

/**
 * Save as draft
 */
saveAsDraft(): void

/**
 * Load from draft
 * @param draftId - Draft ID to load
 */
loadFromDraft(draftId: string): void

📥 Data Loading Methods

/**
 * Load available permissions
 */
loadAvailablePermissions(): void

/**
 * Load available API endpoints
 */
loadAvailableEndpoints(): void

/**
 * Load token templates
 */
loadTokenTemplates(): void

/**
 * Load expiration options
 */
loadExpirationOptions(): void

/**
 * Load rate limit templates
 */
loadRateLimitTemplates(): void

🔐 Permission Configuration Methods

/**
 * Add permission to token
 * @param permission - Permission to add
 */
addPermission(permission: ApiPermission): void

/**
 * Remove permission from token
 * @param permission - Permission to remove
 */
removePermission(permission: ApiPermission): void

/**
 * Select all permissions
 */
selectAllPermissions(): void

/**
 * Clear all permissions
 */
clearAllPermissions(): void

/**
 * Apply permission template
 * @param template - Permission template
 */
applyPermissionTemplate(template: PermissionTemplate): void

/**
 * Configure custom permission
 * @param endpoint - API endpoint
 * @param level - Permission level
 */
configureCustomPermission(endpoint: string, level: PermissionLevel): void

🔑 Token Generation Methods

/**
 * Generate new API token
 * @param tokenData - Token configuration data
 */
generateToken(tokenData: CreateTokenRequest): void

/**
 * Generate token secret
 */
generateTokenSecret(): string

/**
 * Validate token configuration
 */
validateTokenConfig(): boolean

/**
 * Preview token configuration
 */
previewTokenConfig(): void

/**
 * Test token generation
 */
testTokenGeneration(): void

✅ Validation Methods

/**
 * Validate token name
 * @param name - Token name to validate
 */
validateTokenName(name: string): boolean

/**
 * Validate expiration date
 * @param date - Expiration date to validate
 */
validateExpirationDate(date: Date): boolean

/**
 * Validate IP restrictions
 * @param ipList - List of IP addresses
 */
validateIPRestrictions(ipList: string[]): boolean

/**
 * Validate rate limits
 * @param rateLimits - Rate limit configuration
 */
validateRateLimits(rateLimits: RateLimit[]): boolean

/**
 * Check token name uniqueness
 * @param name - Token name to check
 */
checkTokenNameUniqueness(name: string): void

⚙️ Configuration Methods

/**
 * Configure token expiration
 * @param expiration - Expiration configuration
 */
configureExpiration(expiration: ExpirationConfig): void

/**
 * Configure rate limiting
 * @param rateLimits - Rate limit rules
 */
configureRateLimiting(rateLimits: RateLimit[]): void

/**
 * Configure IP restrictions
 * @param ipRestrictions - IP restriction rules
 */
configureIPRestrictions(ipRestrictions: IPRestriction[]): void

/**
 * Configure geographic restrictions
 * @param geoRestrictions - Geographic restrictions
 */
configureGeoRestrictions(geoRestrictions: GeoRestriction[]): void

/**
 * Configure usage quotas
 * @param quotas - Usage quota configuration
 */
configureUsageQuotas(quotas: UsageQuota[]): void

⚙️ ApiService Functions

Core service for API token management, authentication, usage tracking, and security monitoring with comprehensive caching.

Service Properties

export class ApiService {
  // Private properties
  private readonly apiUrl = 'api/tokens';
  private readonly authUrl = 'api/auth';
  private tokensSubject = new BehaviorSubject<ApiToken[]>([]);
  private loadingSubject = new BehaviorSubject<boolean>(false);
  private errorSubject = new BehaviorSubject<string | null>(null);
  
  // Public observables
  public tokens$ = this.tokensSubject.asObservable();
  public loading$ = this.loadingSubject.asObservable();
  public error$ = this.errorSubject.asObservable();
  
  // Cache properties
  private tokenCache = new Map<string, ApiToken>();
  private permissionsCache = new Map<string, ApiPermission[]>();
}

📊 Token CRUD Operations

/**
 * Generate new API token
 * @param tokenData - Token creation data
 */
generateToken(tokenData: CreateTokenRequest): Observable<ApiToken>

/**
 * Get all API tokens
 * @param filters - Optional filters
 */
getAllTokens(filters?: TokenFilters): Observable<ApiToken[]>

/**
 * Get token by ID
 * @param tokenId - Token ID
 */
getTokenById(tokenId: string): Observable<ApiToken>

/**
 * Update token metadata
 * @param tokenId - Token ID
 * @param metadata - Updated metadata
 */
updateToken(tokenId: string, metadata: UpdateTokenRequest): Observable<ApiToken>

/**
 * Revoke API token
 * @param tokenId - Token ID
 * @param reason - Revocation reason
 */
revokeToken(tokenId: string, reason: string): Observable<void>

/**
 * Suspend token
 * @param tokenId - Token ID
 * @param reason - Suspension reason
 */
suspendToken(tokenId: string, reason: string): Observable<void>

/**
 * Reactivate token
 * @param tokenId - Token ID
 */
reactivateToken(tokenId: string): Observable<void>

/**
 * Rotate token (generate new with same permissions)
 * @param tokenId - Token ID
 */
rotateToken(tokenId: string): Observable<ApiToken>

🔐 Token Validation and Authentication

/**
 * Validate token authenticity
 * @param token - Token to validate
 */
validateToken(token: string): Observable<TokenValidationResult>

/**
 * Verify token permissions for endpoint
 * @param token - Token to verify
 * @param endpoint - API endpoint
 * @param method - HTTP method
 */
verifyTokenPermissions(token: string, endpoint: string, method: string): Observable<boolean>

/**
 * Authenticate API request
 * @param token - Authentication token
 * @param request - API request details
 */
authenticateRequest(token: string, request: ApiRequest): Observable<AuthResult>

/**
 * Refresh token if needed
 * @param token - Token to refresh
 */
refreshTokenIfNeeded(token: string): Observable<string>

/**
 * Check token expiration
 * @param tokenId - Token ID
 */
checkTokenExpiration(tokenId: string): Observable<ExpirationStatus>

🔒 Permission Management

/**
 * Get token permissions
 * @param tokenId - Token ID
 */
getTokenPermissions(tokenId: string): Observable<ApiPermission[]>

/**
 * Update token permissions
 * @param tokenId - Token ID
 * @param permissions - New permissions
 */
updateTokenPermissions(tokenId: string, permissions: ApiPermission[]): Observable<void>

/**
 * Add permission to token
 * @param tokenId - Token ID
 * @param permission - Permission to add
 */
addPermission(tokenId: string, permission: ApiPermission): Observable<void>

/**
 * Remove permission from token
 * @param tokenId - Token ID
 * @param permissionId - Permission ID to remove
 */
removePermission(tokenId: string, permissionId: string): Observable<void>

/**
 * Get available permissions
 */
getAvailablePermissions(): Observable<ApiPermission[]>

/**
 * Validate permission configuration
 * @param permissions - Permissions to validate
 */
validatePermissions(permissions: ApiPermission[]): Observable<ValidationResult>

📈 Usage Tracking and Analytics

/**
 * Get token usage statistics
 * @param tokenId - Token ID
 * @param period - Time period
 */
getTokenUsage(tokenId: string, period: TimePeriod): Observable<TokenUsageStatistics>

/**
 * Track API call
 * @param tokenId - Token ID
 * @param callData - API call data
 */
trackApiCall(tokenId: string, callData: ApiCall): Observable<void>

/**
 * Get usage analytics
 * @param tokenIds - Array of token IDs
 * @param period - Analysis period
 */
getUsageAnalytics(tokenIds: string[], period: TimePeriod): Observable<UsageAnalytics>

/**
 * Get performance metrics
 * @param tokenId - Token ID
 */
getPerformanceMetrics(tokenId: string): Observable<PerformanceMetrics>

/**
 * Generate usage report
 * @param tokenIds - Token IDs
 * @param format - Report format
 * @param period - Reporting period
 */
generateUsageReport(tokenIds: string[], format: ReportFormat, period: TimePeriod): Observable<Blob>

🛡️ Rate Limiting and Security

/**
 * Configure rate limits for token
 * @param tokenId - Token ID
 * @param rateLimits - Rate limit configuration
 */
configureRateLimits(tokenId: string, rateLimits: RateLimit[]): Observable<void>

/**
 * Get rate limit status
 * @param tokenId - Token ID
 */
getRateLimitStatus(tokenId: string): Observable<RateLimitStatus>

/**
 * Configure IP restrictions
 * @param tokenId - Token ID
 * @param ipRestrictions - IP restrictions
 */
configureIPRestrictions(tokenId: string, ipRestrictions: IPRestriction[]): Observable<void>

/**
 * Block IP address
 * @param tokenId - Token ID
 * @param ipAddress - IP address to block
 * @param reason - Block reason
 */
blockIPAddress(tokenId: string, ipAddress: string, reason: string): Observable<void>

/**
 * Get security events
 * @param tokenId - Token ID
 * @param period - Time period
 */
getSecurityEvents(tokenId: string, period: TimePeriod): Observable<SecurityEvent[]>

/**
 * Report security incident
 * @param tokenId - Token ID
 * @param incident - Incident details
 */
reportSecurityIncident(tokenId: string, incident: SecurityIncident): Observable<void>

📊 Monitoring and Health

/**
 * Monitor token health
 * @param tokenId - Token ID
 */
monitorTokenHealth(tokenId: string): Observable<TokenHealth>

/**
 * Get API health status
 */
getApiHealthStatus(): Observable<ApiHealthStatus>

/**
 * Monitor real-time usage
 * @param tokenId - Token ID
 */
monitorRealTimeUsage(tokenId: string): Observable<RealTimeUsage>

/**
 * Check API endpoint availability
 * @param endpoint - API endpoint
 */
checkEndpointAvailability(endpoint: string): Observable<EndpointStatus>

/**
 * Get system performance metrics
 */
getSystemPerformanceMetrics(): Observable<SystemPerformance>

💾 Cache Management

/**
 * Cache token data
 * @param token - Token to cache
 */
private cacheToken(token: ApiToken): void

/**
 * Get cached token
 * @param tokenId - Token ID
 */
private getCachedToken(tokenId: string): ApiToken | null

/**
 * Clear token cache
 * @param tokenId - Token ID (optional, clears all if not provided)
 */
clearCache(tokenId?: string): void

/**
 * Refresh cache
 */
refreshCache(): void

/**
 * Validate cache integrity
 */
validateCacheIntegrity(): boolean

⚠️ Error Handling and Logging

/**
 * Handle HTTP errors
 * @param error - HTTP error response
 */
private handleError(error: HttpErrorResponse): Observable<never>

/**
 * Log API operation
 * @param operation - Operation details
 */
private logOperation(operation: ApiOperation): void

/**
 * Handle authentication errors
 * @param error - Authentication error
 */
private handleAuthError(error: AuthError): void

/**
 * Retry failed operations
 * @param operation - Failed operation
 * @param maxRetries - Maximum retry attempts
 */
private retryOperation<T>(operation: Observable<T>, maxRetries: number): Observable<T>

📦 ApiClass Functions

Token model class with comprehensive validation, permission management, and utility methods for API token operations.

Class Properties

export class ApiClass {
  // Token properties
  public id: string;
  public name: string;
  public token: string;
  public secret: string;
  public status: TokenStatus;
  public createdAt: Date;
  public expiresAt: Date;
  public lastUsedAt?: Date;
  
  // Permission properties
  public permissions: ApiPermission[];
  public scopes: string[];
  
  // Usage properties
  public usageCount: number;
  public rateLimits: RateLimit[];
  public restrictions: TokenRestriction[];
}

🏗️ Constructor and Factory Methods

/**
 * Constructor for ApiClass
 * @param data - Token data
 */
constructor(data: TokenData)

/**
 * Create token from API response
 * @param response - API response data
 */
static fromApiResponse(response: any): ApiClass

/**
 * Create token with default values
 * @param name - Token name
 * @param permissions - Initial permissions
 */
static createDefault(name: string, permissions: ApiPermission[]): ApiClass

/**
 * Clone existing token
 * @param originalToken - Token to clone
 */
static clone(originalToken: ApiClass): ApiClass

🔧 Token Management Methods

/**
 * Validate token structure
 */
validate(): ValidationResult

/**
 * Check if token is expired
 */
isExpired(): boolean

/**
 * Check if token is active
 */
isActive(): boolean

/**
 * Get token age in days
 */
getTokenAge(): number

/**
 * Calculate days until expiration
 */
getDaysUntilExpiration(): number

/**
 * Check if token needs renewal
 * @param thresholdDays - Days before expiration to trigger renewal
 */
needsRenewal(thresholdDays: number = 30): boolean

🔐 Permission Methods

/**
 * Check if token has specific permission
 * @param permission - Permission to check
 */
hasPermission(permission: string): boolean

/**
 * Check if token has access to endpoint
 * @param endpoint - API endpoint
 * @param method - HTTP method
 */
hasEndpointAccess(endpoint: string, method: string): boolean

/**
 * Add permission to token
 * @param permission - Permission to add
 */
addPermission(permission: ApiPermission): void

/**
 * Remove permission from token
 * @param permissionId - Permission ID to remove
 */
removePermission(permissionId: string): void

/**
 * Get permission level for endpoint
 * @param endpoint - API endpoint
 */
getPermissionLevel(endpoint: string): PermissionLevel

/**
 * Update permission level
 * @param endpoint - API endpoint
 * @param level - New permission level
 */
updatePermissionLevel(endpoint: string, level: PermissionLevel): void

📊 Usage Tracking Methods

/**
 * Increment usage count
 */
incrementUsage(): void

/**
 * Update last used timestamp
 */
updateLastUsed(): void

/**
 * Check rate limit status
 * @param operation - Operation type
 */
checkRateLimit(operation: string): RateLimitResult

/**
 * Apply rate limit
 * @param operation - Operation type
 */
applyRateLimit(operation: string): void

/**
 * Get usage statistics
 * @param period - Time period
 */
getUsageStats(period: TimePeriod): UsageStatistics

🔄 Serialization Methods

/**
 * Convert to JSON
 */
toJSON(): object

/**
 * Convert to API request format
 */
toApiFormat(): any

/**
 * Convert to display format
 */
toDisplayFormat(): TokenDisplayData

/**
 * Export token data
 * @param format - Export format
 */
export(format: ExportFormat): string

/**
 * Generate token summary
 */
generateSummary(): TokenSummary

🛡️ Security Methods

/**
 * Mask sensitive token data
 */
maskSensitiveData(): ApiClass

/**
 * Generate secure hash
 */
generateSecureHash(): string

/**
 * Verify token integrity
 * @param signature - Security signature
 */
verifyIntegrity(signature: string): boolean

/**
 * Check for security violations
 */
checkSecurityViolations(): SecurityViolation[]

/**
 * Apply security restrictions
 * @param restrictions - Security restrictions
 */
applySecurityRestrictions(restrictions: SecurityRestriction[]): void

📋 Interface Definitions

Core Interfaces

interface ApiToken {
  id: string;
  name: string;
  token: string;
  secret: string;
  status: TokenStatus;
  permissions: ApiPermission[];
  scopes: string[];
  createdAt: Date;
  expiresAt: Date;
  lastUsedAt?: Date;
  usageCount: number;
  rateLimits: RateLimit[];
  restrictions: TokenRestriction[];
  metadata: TokenMetadata;
}

interface ApiPermission {
  id: string;
  name: string;
  description: string;
  endpoint: string;
  methods: string[];
  level: PermissionLevel;
  scopes: string[];
}

interface CreateTokenRequest {
  name: string;
  description?: string;
  permissions: string[];
  expiresAt: Date;
  rateLimits?: RateLimit[];
  restrictions?: TokenRestriction[];
  metadata?: TokenMetadata;
}

interface TokenUsageStatistics {
  tokenId: string;
  totalCalls: number;
  successfulCalls: number;
  failedCalls: number;
  averageResponseTime: number;
  rateLimitHits: number;
  period: TimePeriod;
  breakdown: UsageBreakdown[];
}

interface SecurityEvent {
  id: string;
  tokenId: string;
  eventType: SecurityEventType;
  severity: SecuritySeverity;
  description: string;
  ipAddress: string;
  userAgent: string;
  timestamp: Date;
  resolved: boolean;
}

interface RateLimit {
  operation: string;
  limit: number;
  period: number;
  unit: TimeUnit;
  burst?: number;
}

Enums

enum TokenStatus {
  ACTIVE = 'active',
  SUSPENDED = 'suspended',
  REVOKED = 'revoked',
  EXPIRED = 'expired'
}

enum PermissionLevel {
  READ = 'read',
  WRITE = 'write',
  ADMIN = 'admin',
  FULL = 'full'
}

enum SecurityEventType {
  SUSPICIOUS_ACTIVITY = 'suspicious_activity',
  RATE_LIMIT_EXCEEDED = 'rate_limit_exceeded',
  UNAUTHORIZED_ACCESS = 'unauthorized_access',
  INVALID_TOKEN = 'invalid_token',
  IP_BLOCKED = 'ip_blocked'
}

enum TimePeriod {
  LAST_HOUR = 'last_hour',
  LAST_24_HOURS = 'last_24_hours',
  LAST_7_DAYS = 'last_7_days',
  LAST_30_DAYS = 'last_30_days',
  LAST_90_DAYS = 'last_90_days'
}

Related Documentation

📦 Module Overview