import type { OnEventType } from '../scripts/on-events/api.js'; import type { Feature } from '../syncConfigs/db.js'; import type { JSONSchema7 } from 'json-schema'; export type HTTP_METHOD = 'GET' | 'POST' | 'PATCH' | 'PUT' | 'DELETE'; /** @deprecated **/ export type SyncTypeLiteral = 'incremental' | 'full'; export type ScriptFileType = 'actions' | 'syncs' | 'on-events' | 'post-connection-scripts'; export type ScriptTypeLiteral = 'action' | 'sync' | 'on-event'; export interface NangoYamlV1 { integrations: Record>; models: NangoYamlModel; } export interface NangoYamlV1Integration { type?: ScriptTypeLiteral; returns?: string | string[]; description?: string; runs?: string; track_deletes?: boolean; auto_start?: boolean; version?: string; } export interface NangoYamlV2 { integrations: Record; models: NangoYamlModel; } export interface NangoYamlV2Endpoint { method?: HTTP_METHOD; path: string; group?: string | undefined; } export interface NangoYamlV2Integration { provider?: string; syncs?: Record; actions?: Record; 'on-events'?: Record; /** * @deprecated */ 'post-connection-scripts'?: string[]; } export interface NangoYamlV2IntegrationSync { endpoint: string | string[] | NangoYamlV2Endpoint | NangoYamlV2Endpoint[]; output: string | string[]; description?: string; sync_type?: SyncTypeLiteral; track_deletes?: boolean; auto_start?: boolean; runs: string; scopes?: string | string[]; input?: string; 'webhook-subscriptions'?: string | string[]; version?: string; } export interface NangoYamlV2IntegrationAction { endpoint: string | NangoYamlV2Endpoint; output?: string | string[]; description?: string; scopes?: string | string[]; input?: string; version?: string; } export interface NangoYamlModel { [key: string]: NangoYamlModelFields; } export interface NangoYamlModelFields { [key: string]: NangoYamlModelField; } export type NangoYamlModelField = boolean | number | string | null | string[] | NangoYamlModelFields; export type NangoYaml = NangoYamlV1 | NangoYamlV2; export interface NangoYamlParsed { yamlVersion: 'v1' | 'v2'; integrations: NangoYamlParsedIntegration[]; models: Map; } export interface NangoYamlParsedIntegration { providerConfigKey: string; syncs: ParsedNangoSync[]; actions: ParsedNangoAction[]; onEventScripts: Record; /** * @deprecated */ postConnectionScripts?: string[]; } export interface ParsedNangoSync { name: string; type: 'sync'; endpoints: NangoSyncEndpointV2[]; description: string; /** @deprecated **/ sync_type: SyncTypeLiteral; track_deletes: boolean; auto_start: boolean; runs: string; scopes: string[]; input: string | null; output: string[] | null; usedModels: string[]; webhookSubscriptions: string[]; version: string; json_schema?: JSONSchema7 | undefined; features?: Feature[] | undefined; } export interface ParsedNangoAction { name: string; type: 'action'; description: string; input: string | null; output: string[] | null; endpoint: NangoSyncEndpointV2 | null; scopes: string[]; usedModels: string[]; version: string; json_schema?: JSONSchema7 | undefined; features?: Feature[] | undefined; } export type LayoutMode = 'root' | 'nested'; export interface NangoModel { name: string; description?: string | undefined; fields: NangoModelField[]; isAnon?: boolean | undefined; } export interface NangoModelField { name: string; value: string | number | boolean | null | NangoModelField[]; description?: string | undefined; dynamic?: boolean | undefined; tsType?: boolean | undefined; model?: boolean | undefined; array?: boolean | undefined; union?: boolean | undefined; optional?: boolean | undefined; } export type NangoSyncEndpointOld = Partial>; export interface NangoSyncEndpointV2 { method: HTTP_METHOD; path: string; group?: string | null | undefined; } export interface FlowsYaml { integrations: Record; } export type FlowZeroJson = NangoYamlParsedIntegration & { jsonSchema?: JSONSchema7; sdkVersion: string; }; export type FlowsZeroJson = FlowZeroJson[];