import type { Endpoint } from '../api.js'; import type { ConnectUISettings } from '../connectUISettings/dto.js'; import type { ApiEndUser } from '../endUser/index.js'; export interface ConnectSessionInput { allowed_integrations?: string[] | undefined; integrations_config_defaults?: Record | undefined; connection_config?: { [key: string]: unknown; oauth_scopes_override?: string | undefined; } | undefined; }> | undefined; end_user: EndUserInput; organization?: { id: string; display_name?: string | undefined; } | undefined; tags?: Record | undefined; overrides?: Record | undefined; } export interface EndUserInput { id: string; email?: string | undefined; display_name?: string | undefined; tags?: Record | undefined; } export type ConnectSessionOutput = Omit & { endUser: ApiEndUser | null; isReconnecting?: boolean; connectUISettings: ConnectUISettings; }; export type PostConnectSessionsBody = ConnectSessionInput | (Omit & { /** * When top-level tags is provided, end_user becomes optional. */ tags: NonNullable; end_user?: ConnectSessionInput['end_user'] | undefined; }); export type PostConnectSessions = Endpoint<{ Method: 'POST'; Path: '/connect/sessions'; Body: PostConnectSessionsBody; Success: { data: { token: string; connect_link: string; expires_at: string; }; }; }>; export type PostPublicConnectSessionsReconnect = Endpoint<{ Method: 'POST'; Path: '/connect/sessions/reconnect'; Body: { connection_id: string; integration_id: string; integrations_config_defaults?: ConnectSessionInput['integrations_config_defaults']; end_user?: ConnectSessionInput['end_user'] | undefined; organization?: ConnectSessionInput['organization']; overrides?: ConnectSessionInput['overrides']; tags?: ConnectSessionInput['tags']; }; Success: { data: { token: string; connect_link: string; expires_at: string; }; }; }>; export type GetConnectSession = Endpoint<{ Method: 'GET'; Path: '/connect/session'; Success: { data: ConnectSessionOutput; }; }>; export type DeleteConnectSession = Endpoint<{ Method: 'DELETE'; Path: '/connect/session'; Success: never; }>; export type PostInternalConnectSessions = Endpoint<{ Method: 'POST'; Path: '/api/v1/connect/sessions'; Success: PostConnectSessions['Success']; Body: Pick; }>; export type PostPublicConnectTelemetry = Endpoint<{ Method: 'POST'; Path: '/connect/telemetry'; Body: { token: string; event: 'open' | 'view:list' | 'view:integration' | 'view:unknown_error' | 'view:credentials_error' | 'view:success' | 'click:integration' | 'click:doc' | 'click:doc_section' | 'click:connect' | 'click:close' | 'click:finish' | 'click:outside' | 'popup:blocked_by_browser' | 'popup:closed_early'; timestamp: Date; dimensions?: { integration?: string | undefined; } | undefined; }; Success: never; }>;