/** Datasource associated with an app form field. */ interface AppDatasource { id: string; } /** Field exposed in an app form section. */ interface AppField { id: string; label: string; type: string; required: boolean; placeholder: string | null; key: string; datasource: AppDatasource | null; } /** Section exposed in an app form. */ interface AppSection { id: string; fields: AppField[]; } /** Form definition associated with an app. */ interface AppForm { id: string; sections: AppSection[]; } /** App available to the authenticated company. */ interface App { id: number; companyId: string; name: string | null; description: string | null; icon: string | null; active: boolean; actionId: number | null; } /** App detail response including its form definition. */ interface AppDetails extends App { form: AppForm | null; } /** Response returned when listing apps available to the authenticated company. */ interface AppListResponse { data: App[]; total: number; } /** Request parameters for retrieving an app. */ interface GetAppRequest { appId: number; } /** Request parameters and context used to resolve an app datasource. */ interface ResolveAppDatasourceRequest { appId: number; datasourceId: string; context: Record; } /** Request parameters and context used to submit an app. */ interface SubmitAppRequest { appId: number; context: Record; } /** Item returned by an app datasource resolution. */ interface AppDatasourceItem { value: unknown; label: string; } /** Response returned when resolving an app datasource. */ interface ResolveAppDatasourceResponse { items: AppDatasourceItem[]; } /** Action configured for an integration partner webhook. */ interface IntegrationAction { id: number; hook: string; actionName: string; api: string | null; apiMethod: string | null; fields?: IntegrationField[]; } /** Field/header configured for an integration action webhook. */ interface IntegrationField { id: number; key: string | null; keyReplacement: string | null; valueReplacement: string | null; defaultValue: string | null; type: 'string' | 'int' | 'float' | 'array' | null; modifierId: number; integrationId?: number | null; actionId: number; } /** Partner response returned by the Integrations API. */ interface IntegrationPartner { id: number; name: string; companyId: string; baseUrl: string | null; scope?: string; actions: IntegrationAction[]; } /** Action configured for an automation partner. */ interface AutomationPartnerAction { id?: number; hook?: string; actionName?: string; api?: string | null; path?: string | null; apiMethod?: string | null; method?: string | null; description?: string | null; logo?: string | null; request?: Record | null; command?: string | null; actionTypeId?: number | null; partnerId?: number; } /** Automation partner response returned by the Integrations API. */ interface AutomationPartner { id: number; name: string; companyId?: string | null; baseUrl?: string | null; host?: string | null; logo?: string | null; private?: boolean | null; deleted?: boolean | null; scope?: 'automation' | 'webhook' | null; actions?: AutomationPartnerAction[]; } /** Hook catalog item returned by the Integrations API. */ interface HookCatalogItem { hook: string; alias?: string | null; keys: string[]; } /** Request payload for creating an integration partner. */ interface CreateIntegrationPartnerRequest { name: string; companyId: string; baseUrl: string; } /** Request parameters for retrieving company integration partners. */ interface GetIntegrationPartnersByCompanyRequest { companyId: string; name?: string; } /** Request parameters for listing automation partners. */ interface ListAutomationPartnersRequest { companyId?: string; } /** Request parameters for listing automation partner actions. */ interface ListAutomationActionsRequest { partnerId: number; } /** Request parameters for retrieving an automation partner. */ interface GetAutomationPartnerRequest { id: number; } /** Request parameters for retrieving the webhooks scenario for a company. */ interface GetWebhooksByCompanyRequest { companyId: string; uuid: string; } /** Request payload for creating a webhooks scenario. */ interface CreateWebhookRequest { companyId: string; baseUrl: string; uuid: string; } /** Request parameters for retrieving the hooks catalog. */ interface GetIntegrationHooksCatalogRequest { module?: string; } /** Request payload for creating an automation partner. */ interface CreateAutomationPartnerRequest { name: string; host?: string; baseUrl?: string; logo?: string | null; companyId?: string; private?: boolean; actions?: AutomationPartnerAction[]; } /** Request payload for creating an integration action. */ interface CreateIntegrationActionRequest { partnerId: number; hook: string; api: string; apiMethod: string; actionName?: string; fields?: CreateIntegrationFieldRequest[]; } /** Request payload for updating an integration action. */ type UpdateIntegrationActionRequest = Partial>; /** Request parameters for updating an integration action. */ interface UpdateIntegrationActionParams { actionId: number; payload: UpdateIntegrationActionRequest; } /** Request parameters for deleting an integration partner. */ interface DeleteIntegrationPartnerParams { partnerId: number; } /** Request payload for creating an integration action field/header. */ interface CreateIntegrationFieldRequest { actionId?: number; integrationId?: number | null; key: string; keyReplacement?: string | null; valueReplacement?: string | null; defaultValue?: string | null; type?: 'string' | 'int' | 'float' | 'array' | null; modifierId: number; } /** Request payload for updating an integration action field/header. */ type UpdateIntegrationFieldRequest = Partial; /** Request parameters for updating an integration action field/header. */ interface UpdateIntegrationFieldParams { fieldId: number; payload: UpdateIntegrationFieldRequest; } /** Request parameters for deleting an integration action field/header. */ interface DeleteIntegrationFieldParams { fieldId: number; } /** Request parameters for deleting an integration action. */ interface DeleteIntegrationActionParams { actionId: number; } export type { App, AppDatasource, AppDatasourceItem, AppDetails, AppField, AppForm, AppListResponse, AppSection, AutomationPartner, AutomationPartnerAction, CreateAutomationPartnerRequest, CreateIntegrationActionRequest, CreateIntegrationFieldRequest, CreateIntegrationPartnerRequest, CreateWebhookRequest, DeleteIntegrationActionParams, DeleteIntegrationFieldParams, DeleteIntegrationPartnerParams, GetAppRequest, GetAutomationPartnerRequest, GetIntegrationHooksCatalogRequest, GetIntegrationPartnersByCompanyRequest, GetWebhooksByCompanyRequest, HookCatalogItem, IntegrationAction, IntegrationField, IntegrationPartner, ListAutomationActionsRequest, ListAutomationPartnersRequest, ResolveAppDatasourceRequest, ResolveAppDatasourceResponse, SubmitAppRequest, UpdateIntegrationActionParams, UpdateIntegrationActionRequest, UpdateIntegrationFieldParams, UpdateIntegrationFieldRequest };