feat: migrate ConnectedAccount infrastructure entities to metadata schema (#18784)
## Summary - Migrates 4 entities (`connectedAccount`, `messageChannel`, `calendarChannel`, `messageFolder`) from per-workspace schemas to the shared `core` metadata schema - Introduces a `IS_CONNECTED_ACCOUNT_MIGRATED` feature flag to control the migration: when enabled, reads come from core metadata and all writes are dual-written to both workspace and core - Extracts 12 enums from workspace entity files to `twenty-shared` for reuse across frontend and backend - Creates new TypeORM entities, metadata services, GraphQL resolvers/DTOs, and exception interceptors per entity - Each entity owns its own data access module (`ConnectedAccountDataAccessModule`, `MessageChannelDataAccessModule`, `CalendarChannelDataAccessModule`, `MessageFolderDataAccessModule`) — no umbrella infrastructure module - Adds a 1.20 upgrade command that backfills data from workspace schemas to core (preserving UUIDs) and enables the feature flag - Replaces direct repository access with data access service calls across ~50 files in messaging, calendar, and connected-account modules - Adds `lastSignedInAt` and `oidcTokenClaims` fields to the new `ConnectedAccountEntity` - Drops unused `lastSyncHistoryId` field from the migrated connected account entity ## Test plan - [x] Lint passes (`npx nx lint:diff-with-main twenty-server`) - [x] Typecheck passes (`npx nx typecheck twenty-server`) - [x] All unit tests pass (477 suites, 4267 tests, 0 failures) - [ ] Manual test: verify messaging sync works with feature flag disabled (existing behavior) - [ ] Manual test: run upgrade command on a workspace, verify data backfilled to core tables - [ ] Manual test: verify messaging/calendar sync works with feature flag enabled (dual-write path) - [ ] Manual test: verify GraphQL metadata resolvers return correct data when flag enabled
This commit is contained in:
@@ -761,6 +761,56 @@ export type BooleanFieldComparison = {
|
||||
isNot?: InputMaybe<Scalars['Boolean']>;
|
||||
};
|
||||
|
||||
export type CalendarChannel = {
|
||||
__typename?: 'CalendarChannel';
|
||||
connectedAccountId: Scalars['UUID'];
|
||||
contactAutoCreationPolicy: CalendarChannelContactAutoCreationPolicy;
|
||||
createdAt: Scalars['DateTime'];
|
||||
handle: Scalars['String'];
|
||||
id: Scalars['UUID'];
|
||||
isContactAutoCreationEnabled: Scalars['Boolean'];
|
||||
isSyncEnabled: Scalars['Boolean'];
|
||||
syncCursor?: Maybe<Scalars['String']>;
|
||||
syncStage: CalendarChannelSyncStage;
|
||||
syncStageStartedAt?: Maybe<Scalars['DateTime']>;
|
||||
syncStatus: CalendarChannelSyncStatus;
|
||||
syncedAt?: Maybe<Scalars['DateTime']>;
|
||||
throttleFailureCount: Scalars['Float'];
|
||||
updatedAt: Scalars['DateTime'];
|
||||
visibility: CalendarChannelVisibility;
|
||||
};
|
||||
|
||||
export enum CalendarChannelContactAutoCreationPolicy {
|
||||
AS_ORGANIZER = 'AS_ORGANIZER',
|
||||
AS_PARTICIPANT = 'AS_PARTICIPANT',
|
||||
AS_PARTICIPANT_AND_ORGANIZER = 'AS_PARTICIPANT_AND_ORGANIZER',
|
||||
NONE = 'NONE'
|
||||
}
|
||||
|
||||
export enum CalendarChannelSyncStage {
|
||||
CALENDAR_EVENTS_IMPORT_ONGOING = 'CALENDAR_EVENTS_IMPORT_ONGOING',
|
||||
CALENDAR_EVENTS_IMPORT_PENDING = 'CALENDAR_EVENTS_IMPORT_PENDING',
|
||||
CALENDAR_EVENTS_IMPORT_SCHEDULED = 'CALENDAR_EVENTS_IMPORT_SCHEDULED',
|
||||
CALENDAR_EVENT_LIST_FETCH_ONGOING = 'CALENDAR_EVENT_LIST_FETCH_ONGOING',
|
||||
CALENDAR_EVENT_LIST_FETCH_PENDING = 'CALENDAR_EVENT_LIST_FETCH_PENDING',
|
||||
CALENDAR_EVENT_LIST_FETCH_SCHEDULED = 'CALENDAR_EVENT_LIST_FETCH_SCHEDULED',
|
||||
FAILED = 'FAILED',
|
||||
PENDING_CONFIGURATION = 'PENDING_CONFIGURATION'
|
||||
}
|
||||
|
||||
export enum CalendarChannelSyncStatus {
|
||||
ACTIVE = 'ACTIVE',
|
||||
FAILED_INSUFFICIENT_PERMISSIONS = 'FAILED_INSUFFICIENT_PERMISSIONS',
|
||||
FAILED_UNKNOWN = 'FAILED_UNKNOWN',
|
||||
NOT_SYNCED = 'NOT_SYNCED',
|
||||
ONGOING = 'ONGOING'
|
||||
}
|
||||
|
||||
export enum CalendarChannelVisibility {
|
||||
METADATA = 'METADATA',
|
||||
SHARE_EVERYTHING = 'SHARE_EVERYTHING'
|
||||
}
|
||||
|
||||
export type CalendarConfiguration = {
|
||||
__typename?: 'CalendarConfiguration';
|
||||
configurationType: WidgetConfigurationType;
|
||||
@@ -927,6 +977,25 @@ export type ConfigVariablesGroupData = {
|
||||
variables: Array<ConfigVariable>;
|
||||
};
|
||||
|
||||
export type ConnectedAccountDto = {
|
||||
__typename?: 'ConnectedAccountDTO';
|
||||
accessToken?: Maybe<Scalars['String']>;
|
||||
authFailedAt?: Maybe<Scalars['DateTime']>;
|
||||
connectionParameters?: Maybe<Scalars['JSON']>;
|
||||
createdAt: Scalars['DateTime'];
|
||||
handle: Scalars['String'];
|
||||
handleAliases?: Maybe<Array<Scalars['String']>>;
|
||||
id: Scalars['UUID'];
|
||||
lastCredentialsRefreshedAt?: Maybe<Scalars['DateTime']>;
|
||||
lastSignedInAt?: Maybe<Scalars['DateTime']>;
|
||||
oidcTokenClaims?: Maybe<Scalars['JSON']>;
|
||||
provider: Scalars['String'];
|
||||
refreshToken?: Maybe<Scalars['String']>;
|
||||
scopes?: Maybe<Array<Scalars['String']>>;
|
||||
updatedAt: Scalars['DateTime'];
|
||||
userWorkspaceId: Scalars['UUID'];
|
||||
};
|
||||
|
||||
export type ConnectedImapSmtpCaldavAccount = {
|
||||
__typename?: 'ConnectedImapSmtpCaldavAccount';
|
||||
accountOwnerId: Scalars['UUID'];
|
||||
@@ -1008,6 +1077,17 @@ export type CreateApprovedAccessDomainInput = {
|
||||
email: Scalars['String'];
|
||||
};
|
||||
|
||||
export type CreateCalendarChannelInput = {
|
||||
connectedAccountId: Scalars['UUID'];
|
||||
contactAutoCreationPolicy: CalendarChannelContactAutoCreationPolicy;
|
||||
handle: Scalars['String'];
|
||||
id?: InputMaybe<Scalars['UUID']>;
|
||||
isContactAutoCreationEnabled: Scalars['Boolean'];
|
||||
isSyncEnabled: Scalars['Boolean'];
|
||||
syncStage: CalendarChannelSyncStage;
|
||||
visibility: CalendarChannelVisibility;
|
||||
};
|
||||
|
||||
export type CreateCommandMenuItemInput = {
|
||||
availabilityObjectMetadataId?: InputMaybe<Scalars['UUID']>;
|
||||
availabilityType?: InputMaybe<CommandMenuItemAvailabilityType>;
|
||||
@@ -1023,6 +1103,16 @@ export type CreateCommandMenuItemInput = {
|
||||
workflowVersionId?: InputMaybe<Scalars['UUID']>;
|
||||
};
|
||||
|
||||
export type CreateConnectedAccountInput = {
|
||||
accessToken?: InputMaybe<Scalars['String']>;
|
||||
handle: Scalars['String'];
|
||||
id?: InputMaybe<Scalars['UUID']>;
|
||||
provider: Scalars['String'];
|
||||
refreshToken?: InputMaybe<Scalars['String']>;
|
||||
scopes?: InputMaybe<Array<Scalars['String']>>;
|
||||
userWorkspaceId: Scalars['UUID'];
|
||||
};
|
||||
|
||||
export type CreateFieldInput = {
|
||||
defaultValue?: InputMaybe<Scalars['JSON']>;
|
||||
description?: InputMaybe<Scalars['String']>;
|
||||
@@ -1069,6 +1159,33 @@ export type CreateLogicFunctionFromSourceInput = {
|
||||
universalIdentifier?: InputMaybe<Scalars['UUID']>;
|
||||
};
|
||||
|
||||
export type CreateMessageChannelInput = {
|
||||
connectedAccountId: Scalars['UUID'];
|
||||
contactAutoCreationPolicy: MessageChannelContactAutoCreationPolicy;
|
||||
excludeGroupEmails: Scalars['Boolean'];
|
||||
excludeNonProfessionalEmails: Scalars['Boolean'];
|
||||
handle: Scalars['String'];
|
||||
id?: InputMaybe<Scalars['UUID']>;
|
||||
isContactAutoCreationEnabled: Scalars['Boolean'];
|
||||
isSyncEnabled: Scalars['Boolean'];
|
||||
messageFolderImportPolicy: MessageFolderImportPolicy;
|
||||
pendingGroupEmailsAction: MessageChannelPendingGroupEmailsAction;
|
||||
syncStage: MessageChannelSyncStage;
|
||||
type: MessageChannelType;
|
||||
visibility: MessageChannelVisibility;
|
||||
};
|
||||
|
||||
export type CreateMessageFolderInput = {
|
||||
externalId?: InputMaybe<Scalars['String']>;
|
||||
id?: InputMaybe<Scalars['UUID']>;
|
||||
isSentFolder: Scalars['Boolean'];
|
||||
isSynced: Scalars['Boolean'];
|
||||
messageChannelId: Scalars['UUID'];
|
||||
name?: InputMaybe<Scalars['String']>;
|
||||
parentFolderId?: InputMaybe<Scalars['UUID']>;
|
||||
pendingSyncAction: MessageFolderPendingSyncAction;
|
||||
};
|
||||
|
||||
export type CreateNavigationMenuItemInput = {
|
||||
color?: InputMaybe<Scalars['String']>;
|
||||
folderId?: InputMaybe<Scalars['UUID']>;
|
||||
@@ -1618,6 +1735,7 @@ export enum FeatureFlagKey {
|
||||
IS_APPLICATION_ENABLED = 'IS_APPLICATION_ENABLED',
|
||||
IS_ATTACHMENT_MIGRATED = 'IS_ATTACHMENT_MIGRATED',
|
||||
IS_COMMAND_MENU_ITEM_ENABLED = 'IS_COMMAND_MENU_ITEM_ENABLED',
|
||||
IS_CONNECTED_ACCOUNT_MIGRATED = 'IS_CONNECTED_ACCOUNT_MIGRATED',
|
||||
IS_DASHBOARD_V2_ENABLED = 'IS_DASHBOARD_V2_ENABLED',
|
||||
IS_DATE_TIME_WHOLE_DAY_FILTER_ENABLED = 'IS_DATE_TIME_WHOLE_DAY_FILTER_ENABLED',
|
||||
IS_DRAFT_EMAIL_ENABLED = 'IS_DRAFT_EMAIL_ENABLED',
|
||||
@@ -2289,6 +2407,98 @@ export type MarketplaceAppRoleObjectPermission = {
|
||||
objectUniversalIdentifier: Scalars['String'];
|
||||
};
|
||||
|
||||
export type MessageChannel = {
|
||||
__typename?: 'MessageChannel';
|
||||
connectedAccountId: Scalars['UUID'];
|
||||
contactAutoCreationPolicy: MessageChannelContactAutoCreationPolicy;
|
||||
createdAt: Scalars['DateTime'];
|
||||
excludeGroupEmails: Scalars['Boolean'];
|
||||
excludeNonProfessionalEmails: Scalars['Boolean'];
|
||||
handle: Scalars['String'];
|
||||
id: Scalars['UUID'];
|
||||
isContactAutoCreationEnabled: Scalars['Boolean'];
|
||||
isSyncEnabled: Scalars['Boolean'];
|
||||
messageFolderImportPolicy: MessageFolderImportPolicy;
|
||||
pendingGroupEmailsAction: MessageChannelPendingGroupEmailsAction;
|
||||
syncCursor?: Maybe<Scalars['String']>;
|
||||
syncStage: MessageChannelSyncStage;
|
||||
syncStageStartedAt?: Maybe<Scalars['DateTime']>;
|
||||
syncStatus: MessageChannelSyncStatus;
|
||||
syncedAt?: Maybe<Scalars['DateTime']>;
|
||||
throttleFailureCount: Scalars['Float'];
|
||||
throttleRetryAfter?: Maybe<Scalars['DateTime']>;
|
||||
type: MessageChannelType;
|
||||
updatedAt: Scalars['DateTime'];
|
||||
visibility: MessageChannelVisibility;
|
||||
};
|
||||
|
||||
export enum MessageChannelContactAutoCreationPolicy {
|
||||
NONE = 'NONE',
|
||||
SENT = 'SENT',
|
||||
SENT_AND_RECEIVED = 'SENT_AND_RECEIVED'
|
||||
}
|
||||
|
||||
export enum MessageChannelPendingGroupEmailsAction {
|
||||
GROUP_EMAILS_DELETION = 'GROUP_EMAILS_DELETION',
|
||||
GROUP_EMAILS_IMPORT = 'GROUP_EMAILS_IMPORT',
|
||||
NONE = 'NONE'
|
||||
}
|
||||
|
||||
export enum MessageChannelSyncStage {
|
||||
FAILED = 'FAILED',
|
||||
MESSAGES_IMPORT_ONGOING = 'MESSAGES_IMPORT_ONGOING',
|
||||
MESSAGES_IMPORT_PENDING = 'MESSAGES_IMPORT_PENDING',
|
||||
MESSAGES_IMPORT_SCHEDULED = 'MESSAGES_IMPORT_SCHEDULED',
|
||||
MESSAGE_LIST_FETCH_ONGOING = 'MESSAGE_LIST_FETCH_ONGOING',
|
||||
MESSAGE_LIST_FETCH_PENDING = 'MESSAGE_LIST_FETCH_PENDING',
|
||||
MESSAGE_LIST_FETCH_SCHEDULED = 'MESSAGE_LIST_FETCH_SCHEDULED',
|
||||
PENDING_CONFIGURATION = 'PENDING_CONFIGURATION'
|
||||
}
|
||||
|
||||
export enum MessageChannelSyncStatus {
|
||||
ACTIVE = 'ACTIVE',
|
||||
FAILED_INSUFFICIENT_PERMISSIONS = 'FAILED_INSUFFICIENT_PERMISSIONS',
|
||||
FAILED_UNKNOWN = 'FAILED_UNKNOWN',
|
||||
NOT_SYNCED = 'NOT_SYNCED',
|
||||
ONGOING = 'ONGOING'
|
||||
}
|
||||
|
||||
export enum MessageChannelType {
|
||||
EMAIL = 'EMAIL',
|
||||
SMS = 'SMS'
|
||||
}
|
||||
|
||||
export enum MessageChannelVisibility {
|
||||
METADATA = 'METADATA',
|
||||
SHARE_EVERYTHING = 'SHARE_EVERYTHING',
|
||||
SUBJECT = 'SUBJECT'
|
||||
}
|
||||
|
||||
export type MessageFolder = {
|
||||
__typename?: 'MessageFolder';
|
||||
createdAt: Scalars['DateTime'];
|
||||
externalId?: Maybe<Scalars['String']>;
|
||||
id: Scalars['UUID'];
|
||||
isSentFolder: Scalars['Boolean'];
|
||||
isSynced: Scalars['Boolean'];
|
||||
messageChannelId: Scalars['UUID'];
|
||||
name?: Maybe<Scalars['String']>;
|
||||
parentFolderId?: Maybe<Scalars['UUID']>;
|
||||
pendingSyncAction: MessageFolderPendingSyncAction;
|
||||
syncCursor?: Maybe<Scalars['String']>;
|
||||
updatedAt: Scalars['DateTime'];
|
||||
};
|
||||
|
||||
export enum MessageFolderImportPolicy {
|
||||
ALL_FOLDERS = 'ALL_FOLDERS',
|
||||
SELECTED_FOLDERS = 'SELECTED_FOLDERS'
|
||||
}
|
||||
|
||||
export enum MessageFolderPendingSyncAction {
|
||||
FOLDER_DELETION = 'FOLDER_DELETION',
|
||||
NONE = 'NONE'
|
||||
}
|
||||
|
||||
export type MetadataEvent = {
|
||||
__typename?: 'MetadataEvent';
|
||||
metadataName: Scalars['String'];
|
||||
@@ -2361,8 +2571,10 @@ export type Mutation = {
|
||||
createApplicationRegistration: CreateApplicationRegistration;
|
||||
createApplicationRegistrationVariable: ApplicationRegistrationVariable;
|
||||
createApprovedAccessDomain: ApprovedAccessDomain;
|
||||
createCalendarChannel: CalendarChannel;
|
||||
createChatThread: AgentChatThread;
|
||||
createCommandMenuItem: CommandMenuItem;
|
||||
createConnectedAccount: ConnectedAccountDto;
|
||||
createDatabaseConfigVariable: Scalars['Boolean'];
|
||||
createDevelopmentApplication: DevelopmentApplication;
|
||||
createEmailingDomain: EmailingDomain;
|
||||
@@ -2370,6 +2582,8 @@ export type Mutation = {
|
||||
createManyViewFieldGroups: Array<ViewFieldGroup>;
|
||||
createManyViewFields: Array<ViewField>;
|
||||
createManyViewGroups: Array<ViewGroup>;
|
||||
createMessageChannel: MessageChannel;
|
||||
createMessageFolder: MessageFolder;
|
||||
createNavigationMenuItem: NavigationMenuItem;
|
||||
createOIDCIdentityProvider: SetupSso;
|
||||
createObjectEvent: Analytics;
|
||||
@@ -2397,12 +2611,16 @@ export type Mutation = {
|
||||
deleteApplicationRegistration: Scalars['Boolean'];
|
||||
deleteApplicationRegistrationVariable: Scalars['Boolean'];
|
||||
deleteApprovedAccessDomain: Scalars['Boolean'];
|
||||
deleteCalendarChannel: CalendarChannel;
|
||||
deleteCommandMenuItem: CommandMenuItem;
|
||||
deleteConnectedAccount: ConnectedAccountDto;
|
||||
deleteCurrentWorkspace: Workspace;
|
||||
deleteDatabaseConfigVariable: Scalars['Boolean'];
|
||||
deleteEmailingDomain: Scalars['Boolean'];
|
||||
deleteFrontComponent: FrontComponent;
|
||||
deleteJobs: DeleteJobsResponse;
|
||||
deleteMessageChannel: MessageChannel;
|
||||
deleteMessageFolder: MessageFolder;
|
||||
deleteNavigationMenuItem: NavigationMenuItem;
|
||||
deleteOneAgent: Agent;
|
||||
deleteOneField: Field;
|
||||
@@ -2487,10 +2705,14 @@ export type Mutation = {
|
||||
updateApiKey?: Maybe<ApiKey>;
|
||||
updateApplicationRegistration: ApplicationRegistration;
|
||||
updateApplicationRegistrationVariable: ApplicationRegistrationVariable;
|
||||
updateCalendarChannel: CalendarChannel;
|
||||
updateCommandMenuItem: CommandMenuItem;
|
||||
updateConnectedAccount: ConnectedAccountDto;
|
||||
updateDatabaseConfigVariable: Scalars['Boolean'];
|
||||
updateFrontComponent: FrontComponent;
|
||||
updateLabPublicFeatureFlag: FeatureFlag;
|
||||
updateMessageChannel: MessageChannel;
|
||||
updateMessageFolder: MessageFolder;
|
||||
updateNavigationMenuItem: NavigationMenuItem;
|
||||
updateOneAgent: Agent;
|
||||
updateOneApplicationVariable: Scalars['Boolean'];
|
||||
@@ -2608,11 +2830,21 @@ export type MutationCreateApprovedAccessDomainArgs = {
|
||||
};
|
||||
|
||||
|
||||
export type MutationCreateCalendarChannelArgs = {
|
||||
input: CreateCalendarChannelInput;
|
||||
};
|
||||
|
||||
|
||||
export type MutationCreateCommandMenuItemArgs = {
|
||||
input: CreateCommandMenuItemInput;
|
||||
};
|
||||
|
||||
|
||||
export type MutationCreateConnectedAccountArgs = {
|
||||
input: CreateConnectedAccountInput;
|
||||
};
|
||||
|
||||
|
||||
export type MutationCreateDatabaseConfigVariableArgs = {
|
||||
key: Scalars['String'];
|
||||
value: Scalars['JSON'];
|
||||
@@ -2651,6 +2883,16 @@ export type MutationCreateManyViewGroupsArgs = {
|
||||
};
|
||||
|
||||
|
||||
export type MutationCreateMessageChannelArgs = {
|
||||
input: CreateMessageChannelInput;
|
||||
};
|
||||
|
||||
|
||||
export type MutationCreateMessageFolderArgs = {
|
||||
input: CreateMessageFolderInput;
|
||||
};
|
||||
|
||||
|
||||
export type MutationCreateNavigationMenuItemArgs = {
|
||||
input: CreateNavigationMenuItemInput;
|
||||
};
|
||||
@@ -2789,11 +3031,21 @@ export type MutationDeleteApprovedAccessDomainArgs = {
|
||||
};
|
||||
|
||||
|
||||
export type MutationDeleteCalendarChannelArgs = {
|
||||
id: Scalars['UUID'];
|
||||
};
|
||||
|
||||
|
||||
export type MutationDeleteCommandMenuItemArgs = {
|
||||
id: Scalars['UUID'];
|
||||
};
|
||||
|
||||
|
||||
export type MutationDeleteConnectedAccountArgs = {
|
||||
id: Scalars['UUID'];
|
||||
};
|
||||
|
||||
|
||||
export type MutationDeleteDatabaseConfigVariableArgs = {
|
||||
key: Scalars['String'];
|
||||
};
|
||||
@@ -2815,6 +3067,16 @@ export type MutationDeleteJobsArgs = {
|
||||
};
|
||||
|
||||
|
||||
export type MutationDeleteMessageChannelArgs = {
|
||||
id: Scalars['UUID'];
|
||||
};
|
||||
|
||||
|
||||
export type MutationDeleteMessageFolderArgs = {
|
||||
id: Scalars['UUID'];
|
||||
};
|
||||
|
||||
|
||||
export type MutationDeleteNavigationMenuItemArgs = {
|
||||
id: Scalars['UUID'];
|
||||
};
|
||||
@@ -3217,11 +3479,21 @@ export type MutationUpdateApplicationRegistrationVariableArgs = {
|
||||
};
|
||||
|
||||
|
||||
export type MutationUpdateCalendarChannelArgs = {
|
||||
input: UpdateCalendarChannelInput;
|
||||
};
|
||||
|
||||
|
||||
export type MutationUpdateCommandMenuItemArgs = {
|
||||
input: UpdateCommandMenuItemInput;
|
||||
};
|
||||
|
||||
|
||||
export type MutationUpdateConnectedAccountArgs = {
|
||||
input: UpdateConnectedAccountInput;
|
||||
};
|
||||
|
||||
|
||||
export type MutationUpdateDatabaseConfigVariableArgs = {
|
||||
key: Scalars['String'];
|
||||
value: Scalars['JSON'];
|
||||
@@ -3238,6 +3510,16 @@ export type MutationUpdateLabPublicFeatureFlagArgs = {
|
||||
};
|
||||
|
||||
|
||||
export type MutationUpdateMessageChannelArgs = {
|
||||
input: UpdateMessageChannelInput;
|
||||
};
|
||||
|
||||
|
||||
export type MutationUpdateMessageFolderArgs = {
|
||||
input: UpdateMessageFolderInput;
|
||||
};
|
||||
|
||||
|
||||
export type MutationUpdateNavigationMenuItemArgs = {
|
||||
input: UpdateOneNavigationMenuItemInput;
|
||||
};
|
||||
@@ -3939,6 +4221,8 @@ export type Query = {
|
||||
applicationRegistrationTarballUrl?: Maybe<Scalars['String']>;
|
||||
barChartData: BarChartData;
|
||||
billingPortalSession: BillingSession;
|
||||
calendarChannel?: Maybe<CalendarChannel>;
|
||||
calendarChannels: Array<CalendarChannel>;
|
||||
chatMessages: Array<AgentMessage>;
|
||||
chatThread: AgentChatThread;
|
||||
chatThreads: AgentChatThreadConnection;
|
||||
@@ -3946,6 +4230,8 @@ export type Query = {
|
||||
checkWorkspaceInviteHashIsValid: WorkspaceInviteHashValid;
|
||||
commandMenuItem?: Maybe<CommandMenuItem>;
|
||||
commandMenuItems: Array<CommandMenuItem>;
|
||||
connectedAccount?: Maybe<ConnectedAccountDto>;
|
||||
connectedAccounts: Array<ConnectedAccountDto>;
|
||||
currentUser: User;
|
||||
currentWorkspace: Workspace;
|
||||
enterpriseCheckoutSession?: Maybe<Scalars['String']>;
|
||||
@@ -4020,6 +4306,10 @@ export type Query = {
|
||||
indexMetadatas: IndexConnection;
|
||||
lineChartData: LineChartData;
|
||||
listPlans: Array<BillingPlan>;
|
||||
messageChannel?: Maybe<MessageChannel>;
|
||||
messageChannels: Array<MessageChannel>;
|
||||
messageFolder?: Maybe<MessageFolder>;
|
||||
messageFolders: Array<MessageFolder>;
|
||||
minimalMetadata: MinimalMetadata;
|
||||
navigationMenuItem?: Maybe<NavigationMenuItem>;
|
||||
navigationMenuItems: Array<NavigationMenuItem>;
|
||||
@@ -4061,6 +4351,16 @@ export type QueryBillingPortalSessionArgs = {
|
||||
};
|
||||
|
||||
|
||||
export type QueryCalendarChannelArgs = {
|
||||
id: Scalars['UUID'];
|
||||
};
|
||||
|
||||
|
||||
export type QueryCalendarChannelsArgs = {
|
||||
connectedAccountId?: InputMaybe<Scalars['UUID']>;
|
||||
};
|
||||
|
||||
|
||||
export type QueryChatMessagesArgs = {
|
||||
threadId: Scalars['UUID'];
|
||||
};
|
||||
@@ -4094,6 +4394,11 @@ export type QueryCommandMenuItemArgs = {
|
||||
};
|
||||
|
||||
|
||||
export type QueryConnectedAccountArgs = {
|
||||
id: Scalars['UUID'];
|
||||
};
|
||||
|
||||
|
||||
export type QueryEnterpriseCheckoutSessionArgs = {
|
||||
billingInterval?: InputMaybe<Scalars['String']>;
|
||||
};
|
||||
@@ -4357,6 +4662,26 @@ export type QueryLineChartDataArgs = {
|
||||
};
|
||||
|
||||
|
||||
export type QueryMessageChannelArgs = {
|
||||
id: Scalars['UUID'];
|
||||
};
|
||||
|
||||
|
||||
export type QueryMessageChannelsArgs = {
|
||||
connectedAccountId?: InputMaybe<Scalars['UUID']>;
|
||||
};
|
||||
|
||||
|
||||
export type QueryMessageFolderArgs = {
|
||||
id: Scalars['UUID'];
|
||||
};
|
||||
|
||||
|
||||
export type QueryMessageFoldersArgs = {
|
||||
messageChannelId?: InputMaybe<Scalars['UUID']>;
|
||||
};
|
||||
|
||||
|
||||
export type QueryNavigationMenuItemArgs = {
|
||||
id: Scalars['UUID'];
|
||||
};
|
||||
@@ -4871,6 +5196,18 @@ export type UpdateApplicationRegistrationVariablePayload = {
|
||||
value?: InputMaybe<Scalars['String']>;
|
||||
};
|
||||
|
||||
export type UpdateCalendarChannelInput = {
|
||||
id: Scalars['UUID'];
|
||||
update: UpdateCalendarChannelInputUpdates;
|
||||
};
|
||||
|
||||
export type UpdateCalendarChannelInputUpdates = {
|
||||
contactAutoCreationPolicy?: InputMaybe<CalendarChannelContactAutoCreationPolicy>;
|
||||
isContactAutoCreationEnabled?: InputMaybe<Scalars['Boolean']>;
|
||||
isSyncEnabled?: InputMaybe<Scalars['Boolean']>;
|
||||
visibility?: InputMaybe<CalendarChannelVisibility>;
|
||||
};
|
||||
|
||||
export type UpdateCommandMenuItemInput = {
|
||||
availabilityObjectMetadataId?: InputMaybe<Scalars['UUID']>;
|
||||
availabilityType?: InputMaybe<CommandMenuItemAvailabilityType>;
|
||||
@@ -4884,6 +5221,18 @@ export type UpdateCommandMenuItemInput = {
|
||||
shortLabel?: InputMaybe<Scalars['String']>;
|
||||
};
|
||||
|
||||
export type UpdateConnectedAccountInput = {
|
||||
id: Scalars['UUID'];
|
||||
update: UpdateConnectedAccountInputUpdates;
|
||||
};
|
||||
|
||||
export type UpdateConnectedAccountInputUpdates = {
|
||||
accessToken?: InputMaybe<Scalars['String']>;
|
||||
handleAliases?: InputMaybe<Array<Scalars['String']>>;
|
||||
refreshToken?: InputMaybe<Scalars['String']>;
|
||||
scopes?: InputMaybe<Array<Scalars['String']>>;
|
||||
};
|
||||
|
||||
export type UpdateFieldInput = {
|
||||
defaultValue?: InputMaybe<Scalars['JSON']>;
|
||||
description?: InputMaybe<Scalars['String']>;
|
||||
@@ -4940,6 +5289,33 @@ export type UpdateLogicFunctionFromSourceInputUpdates = {
|
||||
toolInputSchema?: InputMaybe<Scalars['JSON']>;
|
||||
};
|
||||
|
||||
export type UpdateMessageChannelInput = {
|
||||
id: Scalars['UUID'];
|
||||
update: UpdateMessageChannelInputUpdates;
|
||||
};
|
||||
|
||||
export type UpdateMessageChannelInputUpdates = {
|
||||
contactAutoCreationPolicy?: InputMaybe<MessageChannelContactAutoCreationPolicy>;
|
||||
excludeGroupEmails?: InputMaybe<Scalars['Boolean']>;
|
||||
excludeNonProfessionalEmails?: InputMaybe<Scalars['Boolean']>;
|
||||
isContactAutoCreationEnabled?: InputMaybe<Scalars['Boolean']>;
|
||||
isSyncEnabled?: InputMaybe<Scalars['Boolean']>;
|
||||
messageFolderImportPolicy?: InputMaybe<MessageFolderImportPolicy>;
|
||||
visibility?: InputMaybe<MessageChannelVisibility>;
|
||||
};
|
||||
|
||||
export type UpdateMessageFolderInput = {
|
||||
id: Scalars['UUID'];
|
||||
update: UpdateMessageFolderInputUpdates;
|
||||
};
|
||||
|
||||
export type UpdateMessageFolderInputUpdates = {
|
||||
isSynced?: InputMaybe<Scalars['Boolean']>;
|
||||
name?: InputMaybe<Scalars['String']>;
|
||||
pendingSyncAction?: InputMaybe<MessageFolderPendingSyncAction>;
|
||||
syncCursor?: InputMaybe<Scalars['String']>;
|
||||
};
|
||||
|
||||
export type UpdateNavigationMenuItemInput = {
|
||||
color?: InputMaybe<Scalars['String']>;
|
||||
folderId?: InputMaybe<Scalars['UUID']>;
|
||||
|
||||
Reference in New Issue
Block a user