/** * Advanced Webhooks types for Admin SDK * * Advanced webhooks provide powerful event filtering and multi-URL delivery * with comprehensive logging and statistics. */ /** * JSONPath condition operators */ export type JSONPathOperator = 'equals' | 'contains' | 'matches' | 'in' | 'not_in' | 'gt' | 'gte' | 'lt' | 'lte' | 'exists' | 'not_exists'; /** * JSONPath filter condition */ export interface JSONPathCondition { path: string; operator: JSONPathOperator; value: any; } /** * Webhook event filters */ export interface WebhookFilters { remoteJid?: string; fromMe?: boolean; textPattern?: string; textContains?: string; hasMentions?: boolean; mentionsMe?: boolean; mentionsJid?: string; jsonPath?: JSONPathCondition[]; matchAll?: boolean; } /** * Advanced Webhook configuration */ export interface AdvancedWebhook { id: string; tenantId: string; name: string; description?: string; urls: string[]; secret?: string; eventTypes: string[]; sessionId: string; filters?: WebhookFilters; headers?: Record; active: boolean; retryCount: number; timeoutMs: number; triggerCount: number; failureCount: number; lastTriggeredAt?: string; lastError?: string; avgResponseTimeMs?: number; createdAt: string; updatedAt: string; } /** * Advanced Webhook delivery log */ export interface AdvancedWebhookLog { id: string; webhookId: string; tenantId: string; eventId: string; eventType: string; url: string; method: string; headers: any; payload: any; payloadSize?: number; matchedFilters?: Record; attemptNumber: number; maxAttempts: number; statusCode?: number; responseHeaders?: any; responseBody?: string; responseTimeMs?: number; success: boolean; errorType?: string; errorMessage?: string; errorDetails?: any; completedAt: string; createdAt: string; } /** * Webhook statistics */ export interface WebhookStats { webhookId: string; period: { startDate?: string; endDate?: string; }; totalTriggers: number; successfulDeliveries: number; failedDeliveries: number; successRate: number; avgResponseTimeMs: number; minResponseTimeMs: number; maxResponseTimeMs: number; totalRetries: number; retryRate: number; byUrl: { url: string; triggers: number; successes: number; failures: number; successRate: number; }[]; byEventType: { eventType: string; triggers: number; successes: number; failures: number; }[]; errorDistribution: { errorType: string; count: number; }[]; } /** * Data for creating an advanced webhook */ export interface CreateAdvancedWebhookData { name: string; description?: string; urls: string[]; secret?: string; eventTypes: string[]; sessionId?: string; filters?: WebhookFilters; headers?: Record; active?: boolean; retryCount?: number; timeoutMs?: number; tenantId?: string; } /** * Data for updating an advanced webhook */ export interface UpdateAdvancedWebhookData extends Partial { } /** * Query parameters for listing webhooks */ export interface ListWebhooksParams { tenantId?: string; active?: boolean; eventType?: string; } /** * Query parameters for getting webhook logs */ export interface GetLogsParams { tenantId?: string; success?: boolean; url?: string; eventType?: string; startDate?: string; endDate?: string; limit?: number; offset?: number; } /** * Query parameters for getting webhook stats */ export interface GetStatsParams { tenantId?: string; startDate?: string; endDate?: string; } /** * Response for logs endpoint */ export interface GetLogsResponse { data: AdvancedWebhookLog[]; meta: { total: number; limit: number; offset: number; }; } /** * Available event types for webhooks */ export declare const AVAILABLE_EVENT_TYPES: readonly ["messages.upsert", "messages.update", "messages.reaction", "messages.delete", "messages.media-update", "connection.update", "contacts.upsert", "contacts.update", "chats.upsert", "chats.update", "chats.delete", "chats.phoneNumberShare", "groups.upsert", "groups.update", "group-participants.update", "groups.join-request"]; /** * Event type (derived from AVAILABLE_EVENT_TYPES) */ export type EventType = typeof AVAILABLE_EVENT_TYPES[number]; //# sourceMappingURL=advanced-webhooks.d.ts.map