From 9f6a6c3282c158cbfecf1f63df97c2bbdb715bf8 Mon Sep 17 00:00:00 2001 From: martmull Date: Wed, 5 Jun 2024 18:16:53 +0200 Subject: [PATCH] 5622 add a syncemail onboarding step (#5689) - add sync email onboarding step - refactor calendar and email visibility enums - add a new table `keyValuePair` in `core` schema - add a new resolved boolean field `skipSyncEmail` in current user https://github.com/twentyhq/twenty/assets/29927851/de791475-5bfe-47f9-8e90-76c349fba56f --- packages/twenty-chrome-extension/.env.example | 5 +- packages/twenty-chrome-extension/codegen.ts | 20 +- .../src/generated/graphql.tsx | 2224 ++++++++++------- .../twenty-chrome-extension/src/vite-env.d.ts | 1 + packages/twenty-front/src/App.tsx | 10 +- .../src/generated-metadata/graphql.ts | 36 +- .../twenty-front/src/generated/graphql.tsx | 149 +- ...sePageChangeEffectNavigateLocation.test.ts | 30 + .../usePageChangeEffectNavigateLocation.ts | 8 + .../modules/accounts/types/CalendarChannel.ts | 5 +- .../modules/accounts/types/MessageChannel.ts | 4 +- .../calendar/components/CalendarEventRow.tsx | 4 +- .../__tests__/useCalendarEvents.test.tsx | 9 +- .../calendar/types/CalendarEvent.ts | 3 +- .../emails/components/EmailThreadPreview.tsx | 24 +- .../__test__/useOnboardingStatus.test.ts | 77 +- .../modules/auth/hooks/useOnboardingStatus.ts | 3 + .../modules/auth/states/currentUserState.ts | 2 +- .../__test__/getOnboardingStatus.test.ts | 40 + .../modules/auth/utils/getOnboardingStatus.ts | 10 +- .../utils/getObjectMetadataItemsMock.ts | 60 + .../OnboardingSyncEmailsSettingsCard.tsx | 19 + .../onboardingSyncEmailsOptions.tsx | 38 + .../mutations/skipSyncEmailOnboardingStep.ts | 9 + ...AccountsCalendarVisibilitySettingsCard.tsx | 6 +- ...ngsAccountsInboxVisibilitySettingsCard.tsx | 19 +- .../SettingsAccountsListEmptyStateCard.tsx | 6 +- .../SettingsAccountsRadioSettingsCard.tsx | 2 +- .../SettingsAccountsToggleSettingCard.tsx | 2 +- .../hooks/useTriggerGoogleApisOAuth.ts | 42 +- .../twenty-front/src/modules/types/AppPath.ts | 1 + .../ui/layout/card/components/Card.tsx | 5 +- .../hooks/__tests__/useShowAuthModal.test.tsx | 30 + .../ui/layout/hooks/useShowAuthModal.ts | 3 +- .../users/components/UserProviderEffect.tsx | 8 +- .../graphql/fragments/userQueryFragment.ts | 3 + .../users/graphql/queries/getCurrentUser.ts | 47 +- .../{auth => onboarding}/ChooseYourPlan.tsx | 0 .../{auth => onboarding}/CreateProfile.tsx | 0 .../{auth => onboarding}/CreateWorkspace.tsx | 9 - .../{auth => onboarding}/PaymentSuccess.tsx | 0 .../src/pages/onboarding/SyncEmails.tsx | 94 + .../__stories__/ChooseYourPlan.stories.tsx | 5 +- .../__stories__/CreateProfile.stories.tsx | 5 +- .../__stories__/CreateWorkspace.stories.tsx | 5 +- .../__stories__/PaymentSuccess.stories.tsx | 5 +- .../__stories__/SyncEmails.stories.tsx | 46 + .../accounts/SettingsAccountsCalendars.tsx | 8 +- .../SettingsAccountsCalendarsSettings.tsx | 6 +- .../SettingsAccountsEmailsInboxSettings.tsx | 8 +- ...ngsAccountsEmailsInboxSettings.stories.tsx | 3 +- .../src/testing/mock-data/calendar.ts | 13 +- .../standard-metadata-query-result.ts | 15 +- .../mock-data/timeline-calendar-events.ts | 12 +- .../src/testing/mock-data/users.ts | 5 + .../commands/database-command.module.ts | 4 +- ...message-channel-visibility-enum.command.ts | 166 ++ .../workspace/calendar-channel.ts | 3 +- .../workspace/message-channels.ts | 17 +- .../1717425967770-addKeyValuePairTable.ts | 27 + .../src/database/typeorm/typeorm.service.ts | 2 + .../engine/core-modules/auth/auth.module.ts | 2 + .../google-apis-auth.controller.ts | 34 +- .../auth/guards/google-apis-oauth.guard.ts | 16 + .../auth/services/google-apis.service.ts | 17 +- .../strategies/google-apis.auth.strategy.ts | 11 + .../dtos/timeline-calendar-event.dto.ts | 16 +- .../timeline-calendar-event.service.ts | 6 +- .../key-value-pair/key-value-pair.entity.ts | 62 + .../key-value-pair/key-value-pair.module.ts | 22 + .../key-value-pair/key-value-pair.service.ts | 55 + .../messaging/dtos/timeline-thread.dto.ts | 12 +- .../messaging/timeline-messaging.service.ts | 20 +- .../constants/default-user-state.ts | 5 + .../skip-sync-email.entity-onboarding-step.ts | 9 + .../user-state/dtos/user-state.dto.ts | 7 + .../user-state-email-sync-values.enum.ts | 3 + .../user-state/enums/user-states.enum.ts | 3 + .../user-state/user-state.module.ts | 13 + .../user-state/user-state.resolver.ts | 28 + .../user-state/user-state.service.ts | 64 + .../{ => __tests__}/user.service.spec.ts | 3 +- .../engine/core-modules/user/user.entity.ts | 10 + .../engine/core-modules/user/user.module.ts | 2 + .../engine/core-modules/user/user.resolver.ts | 29 +- .../workspace/workspace.entity.ts | 6 + .../workspace-datasource.service.ts | 9 + .../connected-account.repository.ts | 35 + .../message-channel.workspace-entity.ts | 6 +- .../workspace-member.repository.ts | 14 + .../twenty-ui/src/theme/provider/theme.css | 4 +- .../src/content/twenty-ui/input/buttons.mdx | 8 +- 92 files changed, 2707 insertions(+), 1246 deletions(-) create mode 100644 packages/twenty-front/src/modules/onboarding/components/OnboardingSyncEmailsSettingsCard.tsx create mode 100644 packages/twenty-front/src/modules/onboarding/components/onboardingSyncEmailsOptions.tsx create mode 100644 packages/twenty-front/src/modules/onboarding/graphql/mutations/skipSyncEmailOnboardingStep.ts rename packages/twenty-front/src/pages/{auth => onboarding}/ChooseYourPlan.tsx (100%) rename packages/twenty-front/src/pages/{auth => onboarding}/CreateProfile.tsx (100%) rename packages/twenty-front/src/pages/{auth => onboarding}/CreateWorkspace.tsx (95%) rename packages/twenty-front/src/pages/{auth => onboarding}/PaymentSuccess.tsx (100%) create mode 100644 packages/twenty-front/src/pages/onboarding/SyncEmails.tsx rename packages/twenty-front/src/pages/{auth => onboarding}/__stories__/ChooseYourPlan.stories.tsx (95%) rename packages/twenty-front/src/pages/{auth => onboarding}/__stories__/CreateProfile.stories.tsx (91%) rename packages/twenty-front/src/pages/{auth => onboarding}/__stories__/CreateWorkspace.stories.tsx (93%) rename packages/twenty-front/src/pages/{auth => onboarding}/__stories__/PaymentSuccess.stories.tsx (91%) create mode 100644 packages/twenty-front/src/pages/onboarding/__stories__/SyncEmails.stories.tsx create mode 100644 packages/twenty-server/src/database/commands/update-message-channel-visibility-enum.command.ts create mode 100644 packages/twenty-server/src/database/typeorm/core/migrations/1717425967770-addKeyValuePairTable.ts create mode 100644 packages/twenty-server/src/engine/core-modules/key-value-pair/key-value-pair.entity.ts create mode 100644 packages/twenty-server/src/engine/core-modules/key-value-pair/key-value-pair.module.ts create mode 100644 packages/twenty-server/src/engine/core-modules/key-value-pair/key-value-pair.service.ts create mode 100644 packages/twenty-server/src/engine/core-modules/user-state/constants/default-user-state.ts create mode 100644 packages/twenty-server/src/engine/core-modules/user-state/dtos/skip-sync-email.entity-onboarding-step.ts create mode 100644 packages/twenty-server/src/engine/core-modules/user-state/dtos/user-state.dto.ts create mode 100644 packages/twenty-server/src/engine/core-modules/user-state/enums/user-state-email-sync-values.enum.ts create mode 100644 packages/twenty-server/src/engine/core-modules/user-state/enums/user-states.enum.ts create mode 100644 packages/twenty-server/src/engine/core-modules/user-state/user-state.module.ts create mode 100644 packages/twenty-server/src/engine/core-modules/user-state/user-state.resolver.ts create mode 100644 packages/twenty-server/src/engine/core-modules/user-state/user-state.service.ts rename packages/twenty-server/src/engine/core-modules/user/services/{ => __tests__}/user.service.spec.ts (94%) diff --git a/packages/twenty-chrome-extension/.env.example b/packages/twenty-chrome-extension/.env.example index e6da58f93..6871e9e33 100644 --- a/packages/twenty-chrome-extension/.env.example +++ b/packages/twenty-chrome-extension/.env.example @@ -1,3 +1,6 @@ VITE_SERVER_BASE_URL=https://api.twenty.com VITE_FRONT_BASE_URL=https://app.twenty.com -VITE_MODE=production \ No newline at end of file +VITE_MODE=production + +# Used to generate packages/twenty-chrome-extension/src/generated/graphql.tsx +AUTH_TOKEN= diff --git a/packages/twenty-chrome-extension/codegen.ts b/packages/twenty-chrome-extension/codegen.ts index 4a3c8bdc0..fef2e0e8e 100644 --- a/packages/twenty-chrome-extension/codegen.ts +++ b/packages/twenty-chrome-extension/codegen.ts @@ -1,17 +1,19 @@ import { CodegenConfig } from '@graphql-codegen/cli'; const config: CodegenConfig = { - schema: [{ - [`${import.meta.env.VITE_SERVER_BASE_URL}/graphql`]: { - // some of the mutations and queries require authorization (people or companies) - // so to regenrate the schema with types we need to pass a auth token - headers: { - Authorization: 'YOUR-TOKEN-HERE', + schema: [ + { + [`${import.meta.env.VITE_SERVER_BASE_URL}/graphql`]: { + // some of the mutations and queries require authorization (people or companies) + // so to regenerate the schema with types we need to pass an auth token + headers: { + Authorization: `Bearer ${import.meta.env.AUTH_TOKEN}`, + }, }, - } - }], + }, + ], overwrite: true, - documents: ['./src/**/*.ts', '!src/generated/**/*.*' ], + documents: ['./src/**/*.ts', '!src/generated/**/*.*'], generates: { './src/generated/graphql.tsx': { plugins: [ diff --git a/packages/twenty-chrome-extension/src/generated/graphql.tsx b/packages/twenty-chrome-extension/src/generated/graphql.tsx index 424648ee3..32f757e25 100644 --- a/packages/twenty-chrome-extension/src/generated/graphql.tsx +++ b/packages/twenty-chrome-extension/src/generated/graphql.tsx @@ -20,6 +20,7 @@ export type Scalars = { DateTime: any; JSON: any; Position: any; + RawJSONScalar: any; UUID: any; Upload: any; }; @@ -35,13 +36,13 @@ export type Activity = { /** Activity assignee */ assignee?: Maybe; /** Activity assignee id foreign key */ - assigneeId?: Maybe; + assigneeId?: Maybe; /** Activity attachments */ attachments?: Maybe; /** Activity author */ author?: Maybe; /** Activity author id foreign key */ - authorId?: Maybe; + authorId?: Maybe; /** Activity body */ body?: Maybe; /** Activity comments */ @@ -50,11 +51,10 @@ export type Activity = { completedAt?: Maybe; /** Creation date */ createdAt?: Maybe; - deletedAt?: Maybe; /** Activity due date */ dueAt?: Maybe; /** Id */ - id?: Maybe; + id?: Maybe; /** Activity reminder date */ reminderAt?: Maybe; /** Activity title */ @@ -71,8 +71,9 @@ export type ActivityActivityTargetsArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; @@ -82,8 +83,9 @@ export type ActivityAttachmentsArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; @@ -93,8 +95,9 @@ export type ActivityCommentsArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; @@ -109,16 +112,15 @@ export type ActivityConnection = { /** An activity */ export type ActivityCreateInput = { /** Activity assignee id foreign key */ - assigneeId?: InputMaybe; + assigneeId?: InputMaybe; /** Activity author id foreign key */ - authorId?: InputMaybe; + authorId?: InputMaybe; /** Activity body */ body?: InputMaybe; /** Activity completion date */ completedAt?: InputMaybe; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Activity due date */ dueAt?: InputMaybe; /** Id */ @@ -143,20 +145,19 @@ export type ActivityEdge = { export type ActivityFilterInput = { and?: InputMaybe>>; /** Activity assignee id foreign key */ - assigneeId?: InputMaybe; + assigneeId?: InputMaybe; /** Activity author id foreign key */ - authorId?: InputMaybe; + authorId?: InputMaybe; /** Activity body */ body?: InputMaybe; /** Activity completion date */ completedAt?: InputMaybe; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Activity due date */ dueAt?: InputMaybe; /** Id */ - id?: InputMaybe; + id?: InputMaybe; not?: InputMaybe; or?: InputMaybe>>; /** Activity reminder date */ @@ -181,7 +182,6 @@ export type ActivityOrderByInput = { completedAt?: InputMaybe; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Activity due date */ dueAt?: InputMaybe; /** Id */ @@ -201,24 +201,23 @@ export type ActivityTarget = { /** ActivityTarget activity */ activity?: Maybe; /** ActivityTarget activity id foreign key */ - activityId?: Maybe; + activityId?: Maybe; /** ActivityTarget company */ company?: Maybe; /** ActivityTarget company id foreign key */ - companyId?: Maybe; + companyId?: Maybe; /** Creation date */ createdAt?: Maybe; - deletedAt?: Maybe; /** Id */ - id?: Maybe; + id?: Maybe; /** ActivityTarget opportunity */ opportunity?: Maybe; /** ActivityTarget opportunity id foreign key */ - opportunityId?: Maybe; + opportunityId?: Maybe; /** ActivityTarget person */ person?: Maybe; /** ActivityTarget person id foreign key */ - personId?: Maybe; + personId?: Maybe; /** Update date */ updatedAt?: Maybe; }; @@ -234,18 +233,17 @@ export type ActivityTargetConnection = { /** An activity target */ export type ActivityTargetCreateInput = { /** ActivityTarget activity id foreign key */ - activityId?: InputMaybe; + activityId?: InputMaybe; /** ActivityTarget company id foreign key */ - companyId?: InputMaybe; + companyId?: InputMaybe; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Id */ id?: InputMaybe; /** ActivityTarget opportunity id foreign key */ - opportunityId?: InputMaybe; + opportunityId?: InputMaybe; /** ActivityTarget person id foreign key */ - personId?: InputMaybe; + personId?: InputMaybe; /** Update date */ updatedAt?: InputMaybe; }; @@ -259,21 +257,20 @@ export type ActivityTargetEdge = { /** An activity target */ export type ActivityTargetFilterInput = { /** ActivityTarget activity id foreign key */ - activityId?: InputMaybe; + activityId?: InputMaybe; and?: InputMaybe>>; /** ActivityTarget company id foreign key */ - companyId?: InputMaybe; + companyId?: InputMaybe; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Id */ - id?: InputMaybe; + id?: InputMaybe; not?: InputMaybe; /** ActivityTarget opportunity id foreign key */ - opportunityId?: InputMaybe; + opportunityId?: InputMaybe; or?: InputMaybe>>; /** ActivityTarget person id foreign key */ - personId?: InputMaybe; + personId?: InputMaybe; /** Update date */ updatedAt?: InputMaybe; }; @@ -286,7 +283,6 @@ export type ActivityTargetOrderByInput = { companyId?: InputMaybe; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Id */ id?: InputMaybe; /** ActivityTarget opportunity id foreign key */ @@ -300,18 +296,17 @@ export type ActivityTargetOrderByInput = { /** An activity target */ export type ActivityTargetUpdateInput = { /** ActivityTarget activity id foreign key */ - activityId?: InputMaybe; + activityId?: InputMaybe; /** ActivityTarget company id foreign key */ - companyId?: InputMaybe; + companyId?: InputMaybe; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Id */ id?: InputMaybe; /** ActivityTarget opportunity id foreign key */ - opportunityId?: InputMaybe; + opportunityId?: InputMaybe; /** ActivityTarget person id foreign key */ - personId?: InputMaybe; + personId?: InputMaybe; /** Update date */ updatedAt?: InputMaybe; }; @@ -319,16 +314,15 @@ export type ActivityTargetUpdateInput = { /** An activity */ export type ActivityUpdateInput = { /** Activity assignee id foreign key */ - assigneeId?: InputMaybe; + assigneeId?: InputMaybe; /** Activity author id foreign key */ - authorId?: InputMaybe; + authorId?: InputMaybe; /** Activity body */ body?: InputMaybe; /** Activity completion date */ completedAt?: InputMaybe; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Activity due date */ dueAt?: InputMaybe; /** Id */ @@ -346,49 +340,34 @@ export type ActivityUpdateInput = { export type Address = { addressCity?: Maybe; addressCountry?: Maybe; - addressLat?: Maybe; - addressLng?: Maybe; + addressLat?: Maybe; + addressLng?: Maybe; addressPostcode?: Maybe; addressState?: Maybe; addressStreet1?: Maybe; addressStreet2?: Maybe; - createdAt?: Maybe; - deletedAt?: Maybe; - id?: Maybe; - updatedAt?: Maybe; }; export type AddressCreateInput = { addressCity?: InputMaybe; addressCountry?: InputMaybe; - addressLat?: InputMaybe; - addressLng?: InputMaybe; + addressLat?: InputMaybe; + addressLng?: InputMaybe; addressPostcode?: InputMaybe; addressState?: InputMaybe; addressStreet1?: InputMaybe; addressStreet2?: InputMaybe; - createdAt?: InputMaybe; - deletedAt?: InputMaybe; - id?: InputMaybe; - updatedAt?: InputMaybe; }; export type AddressFilterInput = { addressCity?: InputMaybe; addressCountry?: InputMaybe; - addressLat?: InputMaybe; - addressLng?: InputMaybe; + addressLat?: InputMaybe; + addressLng?: InputMaybe; addressPostcode?: InputMaybe; addressState?: InputMaybe; addressStreet1?: InputMaybe; addressStreet2?: InputMaybe; - and?: InputMaybe>>; - createdAt?: InputMaybe; - deletedAt?: InputMaybe; - id?: InputMaybe; - not?: InputMaybe; - or?: InputMaybe>>; - updatedAt?: InputMaybe; }; export type AddressOrderByInput = { @@ -400,25 +379,17 @@ export type AddressOrderByInput = { addressState?: InputMaybe; addressStreet1?: InputMaybe; addressStreet2?: InputMaybe; - createdAt?: InputMaybe; - deletedAt?: InputMaybe; - id?: InputMaybe; - updatedAt?: InputMaybe; }; export type AddressUpdateInput = { addressCity?: InputMaybe; addressCountry?: InputMaybe; - addressLat?: InputMaybe; - addressLng?: InputMaybe; + addressLat?: InputMaybe; + addressLng?: InputMaybe; addressPostcode?: InputMaybe; addressState?: InputMaybe; addressStreet1?: InputMaybe; addressStreet2?: InputMaybe; - createdAt?: InputMaybe; - deletedAt?: InputMaybe; - id?: InputMaybe; - updatedAt?: InputMaybe; }; export type Analytics = { @@ -430,11 +401,10 @@ export type Analytics = { export type ApiKey = { /** Creation date */ createdAt?: Maybe; - deletedAt?: Maybe; /** ApiKey expiration date */ expiresAt?: Maybe; /** Id */ - id?: Maybe; + id?: Maybe; /** ApiKey name */ name?: Maybe; /** ApiKey revocation date */ @@ -455,7 +425,6 @@ export type ApiKeyConnection = { export type ApiKeyCreateInput = { /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** ApiKey expiration date */ expiresAt: Scalars['DateTime']; /** Id */ @@ -479,11 +448,10 @@ export type ApiKeyFilterInput = { and?: InputMaybe>>; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** ApiKey expiration date */ expiresAt?: InputMaybe; /** Id */ - id?: InputMaybe; + id?: InputMaybe; /** ApiKey name */ name?: InputMaybe; not?: InputMaybe; @@ -498,7 +466,6 @@ export type ApiKeyFilterInput = { export type ApiKeyOrderByInput = { /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** ApiKey expiration date */ expiresAt?: InputMaybe; /** Id */ @@ -519,7 +486,6 @@ export type ApiKeyToken = { export type ApiKeyUpdateInput = { /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** ApiKey expiration date */ expiresAt?: InputMaybe; /** Id */ @@ -535,7 +501,7 @@ export type ApiKeyUpdateInput = { export type AppToken = { createdAt: Scalars['DateTime']; expiresAt: Scalars['DateTime']; - id: Scalars['ID']; + id: Scalars['UUID']; type: Scalars['String']; updatedAt: Scalars['DateTime']; }; @@ -552,32 +518,31 @@ export type Attachment = { /** Attachment activity */ activity?: Maybe; /** Attachment activity id foreign key */ - activityId?: Maybe; + activityId?: Maybe; /** Attachment author */ author?: Maybe; /** Attachment author id foreign key */ - authorId?: Maybe; + authorId?: Maybe; /** Attachment company */ company?: Maybe; /** Attachment company id foreign key */ - companyId?: Maybe; + companyId?: Maybe; /** Creation date */ createdAt?: Maybe; - deletedAt?: Maybe; /** Attachment full path */ fullPath?: Maybe; /** Id */ - id?: Maybe; + id?: Maybe; /** Attachment name */ name?: Maybe; /** Attachment opportunity */ opportunity?: Maybe; /** Attachment opportunity id foreign key */ - opportunityId?: Maybe; + opportunityId?: Maybe; /** Attachment person */ person?: Maybe; /** Attachment person id foreign key */ - personId?: Maybe; + personId?: Maybe; /** Attachment type */ type?: Maybe; /** Update date */ @@ -595,14 +560,13 @@ export type AttachmentConnection = { /** An attachment */ export type AttachmentCreateInput = { /** Attachment activity id foreign key */ - activityId?: InputMaybe; + activityId?: InputMaybe; /** Attachment author id foreign key */ - authorId: Scalars['ID']; + authorId: Scalars['UUID']; /** Attachment company id foreign key */ - companyId?: InputMaybe; + companyId?: InputMaybe; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Attachment full path */ fullPath?: InputMaybe; /** Id */ @@ -610,9 +574,9 @@ export type AttachmentCreateInput = { /** Attachment name */ name?: InputMaybe; /** Attachment opportunity id foreign key */ - opportunityId?: InputMaybe; + opportunityId?: InputMaybe; /** Attachment person id foreign key */ - personId?: InputMaybe; + personId?: InputMaybe; /** Attachment type */ type?: InputMaybe; /** Update date */ @@ -628,27 +592,26 @@ export type AttachmentEdge = { /** An attachment */ export type AttachmentFilterInput = { /** Attachment activity id foreign key */ - activityId?: InputMaybe; + activityId?: InputMaybe; and?: InputMaybe>>; /** Attachment author id foreign key */ - authorId?: InputMaybe; + authorId?: InputMaybe; /** Attachment company id foreign key */ - companyId?: InputMaybe; + companyId?: InputMaybe; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Attachment full path */ fullPath?: InputMaybe; /** Id */ - id?: InputMaybe; + id?: InputMaybe; /** Attachment name */ name?: InputMaybe; not?: InputMaybe; /** Attachment opportunity id foreign key */ - opportunityId?: InputMaybe; + opportunityId?: InputMaybe; or?: InputMaybe>>; /** Attachment person id foreign key */ - personId?: InputMaybe; + personId?: InputMaybe; /** Attachment type */ type?: InputMaybe; /** Update date */ @@ -665,7 +628,6 @@ export type AttachmentOrderByInput = { companyId?: InputMaybe; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Attachment full path */ fullPath?: InputMaybe; /** Id */ @@ -685,14 +647,13 @@ export type AttachmentOrderByInput = { /** An attachment */ export type AttachmentUpdateInput = { /** Attachment activity id foreign key */ - activityId?: InputMaybe; + activityId?: InputMaybe; /** Attachment author id foreign key */ - authorId?: InputMaybe; + authorId?: InputMaybe; /** Attachment company id foreign key */ - companyId?: InputMaybe; + companyId?: InputMaybe; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Attachment full path */ fullPath?: InputMaybe; /** Id */ @@ -700,18 +661,158 @@ export type AttachmentUpdateInput = { /** Attachment name */ name?: InputMaybe; /** Attachment opportunity id foreign key */ - opportunityId?: InputMaybe; + opportunityId?: InputMaybe; /** Attachment person id foreign key */ - personId?: InputMaybe; + personId?: InputMaybe; /** Attachment type */ type?: InputMaybe; /** Update date */ updatedAt?: InputMaybe; }; +/** An audit log of actions performed in the system */ +export type AuditLog = { + /** Json object to provide context (user, device, workspace, etc.) */ + context?: Maybe; + /** Creation date */ + createdAt?: Maybe; + /** Id */ + id?: Maybe; + /** Event name/type */ + name?: Maybe; + /** If the event is related to a particular object */ + objectMetadataId?: Maybe; + /** If the event is related to a particular object */ + objectName?: Maybe; + /** Json value for event details */ + properties?: Maybe; + /** Event name/type */ + recordId?: Maybe; + /** Update date */ + updatedAt?: Maybe; + /** Event workspace member */ + workspaceMember?: Maybe; + /** Event workspace member id foreign key */ + workspaceMemberId?: Maybe; +}; + +/** An audit log of actions performed in the system */ +export type AuditLogConnection = { + edges?: Maybe>; + pageInfo?: Maybe; + /** Total number of records in the connection */ + totalCount?: Maybe; +}; + +/** An audit log of actions performed in the system */ +export type AuditLogCreateInput = { + /** Json object to provide context (user, device, workspace, etc.) */ + context?: InputMaybe; + /** Creation date */ + createdAt?: InputMaybe; + /** Id */ + id?: InputMaybe; + /** Event name/type */ + name?: InputMaybe; + /** If the event is related to a particular object */ + objectMetadataId?: InputMaybe; + /** If the event is related to a particular object */ + objectName?: InputMaybe; + /** Json value for event details */ + properties?: InputMaybe; + /** Event name/type */ + recordId?: InputMaybe; + /** Update date */ + updatedAt?: InputMaybe; + /** Event workspace member id foreign key */ + workspaceMemberId?: InputMaybe; +}; + +/** An audit log of actions performed in the system */ +export type AuditLogEdge = { + cursor?: Maybe; + node?: Maybe; +}; + +/** An audit log of actions performed in the system */ +export type AuditLogFilterInput = { + and?: InputMaybe>>; + /** Json object to provide context (user, device, workspace, etc.) */ + context?: InputMaybe; + /** Creation date */ + createdAt?: InputMaybe; + /** Id */ + id?: InputMaybe; + /** Event name/type */ + name?: InputMaybe; + not?: InputMaybe; + /** If the event is related to a particular object */ + objectMetadataId?: InputMaybe; + /** If the event is related to a particular object */ + objectName?: InputMaybe; + or?: InputMaybe>>; + /** Json value for event details */ + properties?: InputMaybe; + /** Event name/type */ + recordId?: InputMaybe; + /** Update date */ + updatedAt?: InputMaybe; + /** Event workspace member id foreign key */ + workspaceMemberId?: InputMaybe; +}; + +/** An audit log of actions performed in the system */ +export type AuditLogOrderByInput = { + /** Json object to provide context (user, device, workspace, etc.) */ + context?: InputMaybe; + /** Creation date */ + createdAt?: InputMaybe; + /** Id */ + id?: InputMaybe; + /** Event name/type */ + name?: InputMaybe; + /** If the event is related to a particular object */ + objectMetadataId?: InputMaybe; + /** If the event is related to a particular object */ + objectName?: InputMaybe; + /** Json value for event details */ + properties?: InputMaybe; + /** Event name/type */ + recordId?: InputMaybe; + /** Update date */ + updatedAt?: InputMaybe; + /** Event workspace member id foreign key */ + workspaceMemberId?: InputMaybe; +}; + +/** An audit log of actions performed in the system */ +export type AuditLogUpdateInput = { + /** Json object to provide context (user, device, workspace, etc.) */ + context?: InputMaybe; + /** Creation date */ + createdAt?: InputMaybe; + /** Id */ + id?: InputMaybe; + /** Event name/type */ + name?: InputMaybe; + /** If the event is related to a particular object */ + objectMetadataId?: InputMaybe; + /** If the event is related to a particular object */ + objectName?: InputMaybe; + /** Json value for event details */ + properties?: InputMaybe; + /** Event name/type */ + recordId?: InputMaybe; + /** Update date */ + updatedAt?: InputMaybe; + /** Event workspace member id foreign key */ + workspaceMemberId?: InputMaybe; +}; + export type AuthProviders = { google: Scalars['Boolean']; magicLink: Scalars['Boolean']; + microsoft: Scalars['Boolean']; password: Scalars['Boolean']; }; @@ -751,14 +852,14 @@ export type Billing = { }; export type BillingSubscription = { - id: Scalars['ID']; + id: Scalars['UUID']; interval?: Maybe; status: Scalars['String']; }; export type BillingSubscriptionFilter = { and?: InputMaybe>; - id?: InputMaybe; + id?: InputMaybe; or?: InputMaybe>; }; @@ -776,17 +877,16 @@ export enum BillingSubscriptionSortFields { export type Blocklist = { /** Creation date */ createdAt?: Maybe; - deletedAt?: Maybe; /** Handle */ handle?: Maybe; /** Id */ - id?: Maybe; + id?: Maybe; /** Update date */ updatedAt?: Maybe; /** WorkspaceMember */ workspaceMember?: Maybe; /** WorkspaceMember id foreign key */ - workspaceMemberId?: Maybe; + workspaceMemberId?: Maybe; }; /** Blocklist */ @@ -801,7 +901,6 @@ export type BlocklistConnection = { export type BlocklistCreateInput = { /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Handle */ handle?: InputMaybe; /** Id */ @@ -809,7 +908,7 @@ export type BlocklistCreateInput = { /** Update date */ updatedAt?: InputMaybe; /** WorkspaceMember id foreign key */ - workspaceMemberId: Scalars['ID']; + workspaceMemberId: Scalars['UUID']; }; /** Blocklist */ @@ -823,24 +922,22 @@ export type BlocklistFilterInput = { and?: InputMaybe>>; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Handle */ handle?: InputMaybe; /** Id */ - id?: InputMaybe; + id?: InputMaybe; not?: InputMaybe; or?: InputMaybe>>; /** Update date */ updatedAt?: InputMaybe; /** WorkspaceMember id foreign key */ - workspaceMemberId?: InputMaybe; + workspaceMemberId?: InputMaybe; }; /** Blocklist */ export type BlocklistOrderByInput = { /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Handle */ handle?: InputMaybe; /** Id */ @@ -855,7 +952,6 @@ export type BlocklistOrderByInput = { export type BlocklistUpdateInput = { /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Handle */ handle?: InputMaybe; /** Id */ @@ -863,7 +959,7 @@ export type BlocklistUpdateInput = { /** Update date */ updatedAt?: InputMaybe; /** WorkspaceMember id foreign key */ - workspaceMemberId?: InputMaybe; + workspaceMemberId?: InputMaybe; }; export type BooleanFieldComparison = { @@ -883,20 +979,23 @@ export type CalendarChannel = { /** Connected Account */ connectedAccount?: Maybe; /** Connected Account id foreign key */ - connectedAccountId?: Maybe; + connectedAccountId?: Maybe; /** Creation date */ createdAt?: Maybe; - deletedAt?: Maybe; /** Handle */ handle?: Maybe; /** Id */ - id?: Maybe; + id?: Maybe; /** Is Contact Auto Creation Enabled */ isContactAutoCreationEnabled?: Maybe; /** Is Sync Enabled */ isSyncEnabled?: Maybe; /** Sync Cursor. Used for syncing events from the calendar provider */ syncCursor?: Maybe; + /** Throttle Failure Count */ + throttleFailureCount?: Maybe; + /** Throttle Pause Until */ + throttlePauseUntil?: Maybe; /** Update date */ updatedAt?: Maybe; /** Visibility */ @@ -909,8 +1008,9 @@ export type CalendarChannelCalendarChannelEventAssociationsArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; @@ -925,10 +1025,9 @@ export type CalendarChannelConnection = { /** Calendar Channels */ export type CalendarChannelCreateInput = { /** Connected Account id foreign key */ - connectedAccountId: Scalars['ID']; + connectedAccountId: Scalars['UUID']; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Handle */ handle?: InputMaybe; /** Id */ @@ -939,6 +1038,10 @@ export type CalendarChannelCreateInput = { isSyncEnabled?: InputMaybe; /** Sync Cursor. Used for syncing events from the calendar provider */ syncCursor?: InputMaybe; + /** Throttle Failure Count */ + throttleFailureCount?: InputMaybe; + /** Throttle Pause Until */ + throttlePauseUntil?: InputMaybe; /** Update date */ updatedAt?: InputMaybe; /** Visibility */ @@ -956,18 +1059,17 @@ export type CalendarChannelEventAssociation = { /** Channel ID */ calendarChannel?: Maybe; /** Channel ID id foreign key */ - calendarChannelId?: Maybe; + calendarChannelId?: Maybe; /** Event ID */ calendarEvent?: Maybe; /** Event ID id foreign key */ - calendarEventId?: Maybe; + calendarEventId?: Maybe; /** Creation date */ createdAt?: Maybe; - deletedAt?: Maybe; /** Event external ID */ eventExternalId?: Maybe; /** Id */ - id?: Maybe; + id?: Maybe; /** Update date */ updatedAt?: Maybe; }; @@ -983,12 +1085,11 @@ export type CalendarChannelEventAssociationConnection = { /** Calendar Channel Event Associations */ export type CalendarChannelEventAssociationCreateInput = { /** Channel ID id foreign key */ - calendarChannelId: Scalars['ID']; + calendarChannelId: Scalars['UUID']; /** Event ID id foreign key */ - calendarEventId: Scalars['ID']; + calendarEventId: Scalars['UUID']; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Event external ID */ eventExternalId?: InputMaybe; /** Id */ @@ -1007,16 +1108,15 @@ export type CalendarChannelEventAssociationEdge = { export type CalendarChannelEventAssociationFilterInput = { and?: InputMaybe>>; /** Channel ID id foreign key */ - calendarChannelId?: InputMaybe; + calendarChannelId?: InputMaybe; /** Event ID id foreign key */ - calendarEventId?: InputMaybe; + calendarEventId?: InputMaybe; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Event external ID */ eventExternalId?: InputMaybe; /** Id */ - id?: InputMaybe; + id?: InputMaybe; not?: InputMaybe; or?: InputMaybe>>; /** Update date */ @@ -1031,7 +1131,6 @@ export type CalendarChannelEventAssociationOrderByInput = { calendarEventId?: InputMaybe; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Event external ID */ eventExternalId?: InputMaybe; /** Id */ @@ -1043,12 +1142,11 @@ export type CalendarChannelEventAssociationOrderByInput = { /** Calendar Channel Event Associations */ export type CalendarChannelEventAssociationUpdateInput = { /** Channel ID id foreign key */ - calendarChannelId?: InputMaybe; + calendarChannelId?: InputMaybe; /** Event ID id foreign key */ - calendarEventId?: InputMaybe; + calendarEventId?: InputMaybe; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Event external ID */ eventExternalId?: InputMaybe; /** Id */ @@ -1061,14 +1159,13 @@ export type CalendarChannelEventAssociationUpdateInput = { export type CalendarChannelFilterInput = { and?: InputMaybe>>; /** Connected Account id foreign key */ - connectedAccountId?: InputMaybe; + connectedAccountId?: InputMaybe; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Handle */ handle?: InputMaybe; /** Id */ - id?: InputMaybe; + id?: InputMaybe; /** Is Contact Auto Creation Enabled */ isContactAutoCreationEnabled?: InputMaybe; /** Is Sync Enabled */ @@ -1077,6 +1174,10 @@ export type CalendarChannelFilterInput = { or?: InputMaybe>>; /** Sync Cursor. Used for syncing events from the calendar provider */ syncCursor?: InputMaybe; + /** Throttle Failure Count */ + throttleFailureCount?: InputMaybe; + /** Throttle Pause Until */ + throttlePauseUntil?: InputMaybe; /** Update date */ updatedAt?: InputMaybe; /** Visibility */ @@ -1089,7 +1190,6 @@ export type CalendarChannelOrderByInput = { connectedAccountId?: InputMaybe; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Handle */ handle?: InputMaybe; /** Id */ @@ -1100,6 +1200,10 @@ export type CalendarChannelOrderByInput = { isSyncEnabled?: InputMaybe; /** Sync Cursor. Used for syncing events from the calendar provider */ syncCursor?: InputMaybe; + /** Throttle Failure Count */ + throttleFailureCount?: InputMaybe; + /** Throttle Pause Until */ + throttlePauseUntil?: InputMaybe; /** Update date */ updatedAt?: InputMaybe; /** Visibility */ @@ -1109,10 +1213,9 @@ export type CalendarChannelOrderByInput = { /** Calendar Channels */ export type CalendarChannelUpdateInput = { /** Connected Account id foreign key */ - connectedAccountId?: InputMaybe; + connectedAccountId?: InputMaybe; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Handle */ handle?: InputMaybe; /** Id */ @@ -1123,12 +1226,22 @@ export type CalendarChannelUpdateInput = { isSyncEnabled?: InputMaybe; /** Sync Cursor. Used for syncing events from the calendar provider */ syncCursor?: InputMaybe; + /** Throttle Failure Count */ + throttleFailureCount?: InputMaybe; + /** Throttle Pause Until */ + throttlePauseUntil?: InputMaybe; /** Update date */ updatedAt?: InputMaybe; /** Visibility */ visibility?: InputMaybe; }; +/** Visibility of the calendar channel */ +export enum CalendarChannelVisibility { + Metadata = 'METADATA', + ShareEverything = 'SHARE_EVERYTHING' +} + /** Visibility */ export enum CalendarChannelVisibilityEnum { /** Metadata */ @@ -1148,19 +1261,18 @@ export type CalendarChannelVisibilityEnumFilter = { export type CalendarEvent = { /** Calendar Channel Event Associations */ calendarChannelEventAssociations?: Maybe; + /** Event Participants */ + calendarEventParticipants?: Maybe; /** Meet Link */ conferenceLink?: Maybe; /** Conference Solution */ conferenceSolution?: Maybe; /** Creation date */ createdAt?: Maybe; - deletedAt?: Maybe; /** Description */ description?: Maybe; /** End Date */ endsAt?: Maybe; - /** Event Participants */ - eventParticipants?: Maybe; /** Creation DateTime */ externalCreatedAt?: Maybe; /** Update DateTime */ @@ -1168,7 +1280,7 @@ export type CalendarEvent = { /** iCal UID */ iCalUID?: Maybe; /** Id */ - id?: Maybe; + id?: Maybe; /** Is canceled */ isCanceled?: Maybe; /** Is Full Day */ @@ -1191,19 +1303,21 @@ export type CalendarEventCalendarChannelEventAssociationsArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; /** Calendar events */ -export type CalendarEventEventParticipantsArgs = { +export type CalendarEventCalendarEventParticipantsArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; @@ -1223,7 +1337,6 @@ export type CalendarEventCreateInput = { conferenceSolution?: InputMaybe; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Description */ description?: InputMaybe; /** End Date */ @@ -1267,7 +1380,6 @@ export type CalendarEventFilterInput = { conferenceSolution?: InputMaybe; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Description */ description?: InputMaybe; /** End Date */ @@ -1279,7 +1391,7 @@ export type CalendarEventFilterInput = { /** iCal UID */ iCalUID?: InputMaybe; /** Id */ - id?: InputMaybe; + id?: InputMaybe; /** Is canceled */ isCanceled?: InputMaybe; /** Is Full Day */ @@ -1306,7 +1418,6 @@ export type CalendarEventOrderByInput = { conferenceSolution?: InputMaybe; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Description */ description?: InputMaybe; /** End Date */ @@ -1340,22 +1451,21 @@ export type CalendarEventParticipant = { /** Event ID */ calendarEvent?: Maybe; /** Event ID id foreign key */ - calendarEventId?: Maybe; + calendarEventId?: Maybe; /** Creation date */ createdAt?: Maybe; - deletedAt?: Maybe; /** Display Name */ displayName?: Maybe; /** Handle */ handle?: Maybe; /** Id */ - id?: Maybe; + id?: Maybe; /** Is Organizer */ isOrganizer?: Maybe; /** Person */ person?: Maybe; /** Person id foreign key */ - personId?: Maybe; + personId?: Maybe; /** Response Status */ responseStatus?: Maybe; /** Update date */ @@ -1363,7 +1473,7 @@ export type CalendarEventParticipant = { /** Workspace Member */ workspaceMember?: Maybe; /** Workspace Member id foreign key */ - workspaceMemberId?: Maybe; + workspaceMemberId?: Maybe; }; /** Calendar event participants */ @@ -1377,10 +1487,9 @@ export type CalendarEventParticipantConnection = { /** Calendar event participants */ export type CalendarEventParticipantCreateInput = { /** Event ID id foreign key */ - calendarEventId: Scalars['ID']; + calendarEventId: Scalars['UUID']; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Display Name */ displayName?: InputMaybe; /** Handle */ @@ -1390,13 +1499,13 @@ export type CalendarEventParticipantCreateInput = { /** Is Organizer */ isOrganizer?: InputMaybe; /** Person id foreign key */ - personId?: InputMaybe; + personId?: InputMaybe; /** Response Status */ responseStatus?: InputMaybe; /** Update date */ updatedAt?: InputMaybe; /** Workspace Member id foreign key */ - workspaceMemberId?: InputMaybe; + workspaceMemberId?: InputMaybe; }; /** Calendar event participants */ @@ -1409,28 +1518,27 @@ export type CalendarEventParticipantEdge = { export type CalendarEventParticipantFilterInput = { and?: InputMaybe>>; /** Event ID id foreign key */ - calendarEventId?: InputMaybe; + calendarEventId?: InputMaybe; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Display Name */ displayName?: InputMaybe; /** Handle */ handle?: InputMaybe; /** Id */ - id?: InputMaybe; + id?: InputMaybe; /** Is Organizer */ isOrganizer?: InputMaybe; not?: InputMaybe; or?: InputMaybe>>; /** Person id foreign key */ - personId?: InputMaybe; + personId?: InputMaybe; /** Response Status */ responseStatus?: InputMaybe; /** Update date */ updatedAt?: InputMaybe; /** Workspace Member id foreign key */ - workspaceMemberId?: InputMaybe; + workspaceMemberId?: InputMaybe; }; /** Calendar event participants */ @@ -1439,7 +1547,6 @@ export type CalendarEventParticipantOrderByInput = { calendarEventId?: InputMaybe; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Display Name */ displayName?: InputMaybe; /** Handle */ @@ -1480,10 +1587,9 @@ export type CalendarEventParticipantResponseStatusEnumFilter = { /** Calendar event participants */ export type CalendarEventParticipantUpdateInput = { /** Event ID id foreign key */ - calendarEventId?: InputMaybe; + calendarEventId?: InputMaybe; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Display Name */ displayName?: InputMaybe; /** Handle */ @@ -1493,13 +1599,13 @@ export type CalendarEventParticipantUpdateInput = { /** Is Organizer */ isOrganizer?: InputMaybe; /** Person id foreign key */ - personId?: InputMaybe; + personId?: InputMaybe; /** Response Status */ responseStatus?: InputMaybe; /** Update date */ updatedAt?: InputMaybe; /** Workspace Member id foreign key */ - workspaceMemberId?: InputMaybe; + workspaceMemberId?: InputMaybe; }; /** Calendar events */ @@ -1510,7 +1616,6 @@ export type CalendarEventUpdateInput = { conferenceSolution?: InputMaybe; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Description */ description?: InputMaybe; /** End Date */ @@ -1539,9 +1644,21 @@ export type CalendarEventUpdateInput = { updatedAt?: InputMaybe; }; +export type Captcha = { + provider?: Maybe; + siteKey?: Maybe; +}; + +export enum CaptchaDriverType { + GoogleRecatpcha = 'GoogleRecatpcha', + Turnstile = 'Turnstile' +} + export type ClientConfig = { authProviders: AuthProviders; billing: Billing; + captcha: Captcha; + chromeExtensionId?: Maybe; debugMode: Scalars['Boolean']; sentry: Sentry; signInPrefilled: Scalars['Boolean']; @@ -1555,18 +1672,17 @@ export type Comment = { /** Comment activity */ activity?: Maybe; /** Comment activity id foreign key */ - activityId?: Maybe; + activityId?: Maybe; /** Comment author */ author?: Maybe; /** Comment author id foreign key */ - authorId?: Maybe; + authorId?: Maybe; /** Comment body */ body?: Maybe; /** Creation date */ createdAt?: Maybe; - deletedAt?: Maybe; /** Id */ - id?: Maybe; + id?: Maybe; /** Update date */ updatedAt?: Maybe; }; @@ -1582,14 +1698,13 @@ export type CommentConnection = { /** A comment */ export type CommentCreateInput = { /** Comment activity id foreign key */ - activityId: Scalars['ID']; + activityId: Scalars['UUID']; /** Comment author id foreign key */ - authorId: Scalars['ID']; + authorId: Scalars['UUID']; /** Comment body */ body?: InputMaybe; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Id */ id?: InputMaybe; /** Update date */ @@ -1605,17 +1720,16 @@ export type CommentEdge = { /** A comment */ export type CommentFilterInput = { /** Comment activity id foreign key */ - activityId?: InputMaybe; + activityId?: InputMaybe; and?: InputMaybe>>; /** Comment author id foreign key */ - authorId?: InputMaybe; + authorId?: InputMaybe; /** Comment body */ body?: InputMaybe; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Id */ - id?: InputMaybe; + id?: InputMaybe; not?: InputMaybe; or?: InputMaybe>>; /** Update date */ @@ -1632,7 +1746,6 @@ export type CommentOrderByInput = { body?: InputMaybe; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Id */ id?: InputMaybe; /** Update date */ @@ -1642,14 +1755,13 @@ export type CommentOrderByInput = { /** A comment */ export type CommentUpdateInput = { /** Comment activity id foreign key */ - activityId?: InputMaybe; + activityId?: InputMaybe; /** Comment author id foreign key */ - authorId?: InputMaybe; + authorId?: InputMaybe; /** Comment body */ body?: InputMaybe; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Id */ id?: InputMaybe; /** Update date */ @@ -1661,28 +1773,25 @@ export type Company = { /** Your team member responsible for managing the company account */ accountOwner?: Maybe; /** Your team member responsible for managing the company account id foreign key */ - accountOwnerId?: Maybe; + accountOwnerId?: Maybe; /** Activities tied to the company */ activityTargets?: Maybe; /** The company address */ address?: Maybe; /** Annual Recurring Revenue: The actual or estimated annual revenue of the company */ annualRecurringRevenue?: Maybe; - /** Attachments linked to the company. */ + /** Attachments linked to the company */ attachments?: Maybe; /** Creation date */ createdAt?: Maybe; - deletedAt?: Maybe; /** The company website URL. We use this url to fetch the company icon */ domainName?: Maybe; /** Number of employees in the company */ employees?: Maybe; - /** Events linked to the company */ - events?: Maybe; /** Favorites linked to the company */ favorites?: Maybe; /** Id */ - id?: Maybe; + id?: Maybe; /** Ideal Customer Profile: Indicates whether the company is the most suitable and valuable customer for you */ idealCustomerProfile?: Maybe; /** The company Linkedin account */ @@ -1695,6 +1804,8 @@ export type Company = { people?: Maybe; /** Company record position */ position?: Maybe; + /** Timeline Activities linked to the company */ + timelineActivities?: Maybe; /** Update date */ updatedAt?: Maybe; /** The company Twitter/X account */ @@ -1707,8 +1818,9 @@ export type CompanyActivityTargetsArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; @@ -1718,30 +1830,21 @@ export type CompanyAttachmentsArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; -/** A company */ -export type CompanyEventsArgs = { - after?: InputMaybe; - before?: InputMaybe; - filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; - orderBy?: InputMaybe; -}; - - /** A company */ export type CompanyFavoritesArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; @@ -1751,8 +1854,9 @@ export type CompanyOpportunitiesArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; @@ -1762,11 +1866,24 @@ export type CompanyPeopleArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; + +/** A company */ +export type CompanyTimelineActivitiesArgs = { + after?: InputMaybe; + before?: InputMaybe; + filter?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; + orderBy?: InputMaybe; +}; + /** A company */ export type CompanyConnection = { edges?: Maybe>; @@ -1778,14 +1895,13 @@ export type CompanyConnection = { /** A company */ export type CompanyCreateInput = { /** Your team member responsible for managing the company account id foreign key */ - accountOwnerId?: InputMaybe; + accountOwnerId?: InputMaybe; /** The company address */ address?: InputMaybe; /** Annual Recurring Revenue: The actual or estimated annual revenue of the company */ annualRecurringRevenue?: InputMaybe; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** The company website URL. We use this url to fetch the company icon */ domainName?: InputMaybe; /** Number of employees in the company */ @@ -1815,7 +1931,7 @@ export type CompanyEdge = { /** A company */ export type CompanyFilterInput = { /** Your team member responsible for managing the company account id foreign key */ - accountOwnerId?: InputMaybe; + accountOwnerId?: InputMaybe; /** The company address */ address?: InputMaybe; and?: InputMaybe>>; @@ -1823,13 +1939,12 @@ export type CompanyFilterInput = { annualRecurringRevenue?: InputMaybe; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** The company website URL. We use this url to fetch the company icon */ domainName?: InputMaybe; /** Number of employees in the company */ employees?: InputMaybe; /** Id */ - id?: InputMaybe; + id?: InputMaybe; /** Ideal Customer Profile: Indicates whether the company is the most suitable and valuable customer for you */ idealCustomerProfile?: InputMaybe; /** The company Linkedin account */ @@ -1856,7 +1971,6 @@ export type CompanyOrderByInput = { annualRecurringRevenue?: InputMaybe; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** The company website URL. We use this url to fetch the company icon */ domainName?: InputMaybe; /** Number of employees in the company */ @@ -1880,14 +1994,13 @@ export type CompanyOrderByInput = { /** A company */ export type CompanyUpdateInput = { /** Your team member responsible for managing the company account id foreign key */ - accountOwnerId?: InputMaybe; + accountOwnerId?: InputMaybe; /** The company address */ address?: InputMaybe; /** Annual Recurring Revenue: The actual or estimated annual revenue of the company */ annualRecurringRevenue?: InputMaybe; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** The company website URL. We use this url to fetch the company icon */ domainName?: InputMaybe; /** Number of employees in the company */ @@ -1915,21 +2028,20 @@ export type ConnectedAccount = { /** Account Owner */ accountOwner?: Maybe; /** Account Owner id foreign key */ - accountOwnerId?: Maybe; + accountOwnerId?: Maybe; /** Auth failed at */ authFailedAt?: Maybe; - /** Calendar Channel */ + /** Calendar Channels */ calendarChannels?: Maybe; /** Creation date */ createdAt?: Maybe; - deletedAt?: Maybe; /** The account handle (email, username, phone number, etc.) */ handle?: Maybe; /** Id */ - id?: Maybe; + id?: Maybe; /** Last sync history ID */ lastSyncHistoryId?: Maybe; - /** Message Channel */ + /** Message Channels */ messageChannels?: Maybe; /** The account provider */ provider?: Maybe; @@ -1945,8 +2057,9 @@ export type ConnectedAccountCalendarChannelsArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; @@ -1956,8 +2069,9 @@ export type ConnectedAccountMessageChannelsArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; @@ -1974,12 +2088,11 @@ export type ConnectedAccountCreateInput = { /** Messaging provider access token */ accessToken?: InputMaybe; /** Account Owner id foreign key */ - accountOwnerId: Scalars['ID']; + accountOwnerId: Scalars['UUID']; /** Auth failed at */ authFailedAt?: InputMaybe; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** The account handle (email, username, phone number, etc.) */ handle?: InputMaybe; /** Id */ @@ -2005,17 +2118,16 @@ export type ConnectedAccountFilterInput = { /** Messaging provider access token */ accessToken?: InputMaybe; /** Account Owner id foreign key */ - accountOwnerId?: InputMaybe; + accountOwnerId?: InputMaybe; and?: InputMaybe>>; /** Auth failed at */ authFailedAt?: InputMaybe; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** The account handle (email, username, phone number, etc.) */ handle?: InputMaybe; /** Id */ - id?: InputMaybe; + id?: InputMaybe; /** Last sync history ID */ lastSyncHistoryId?: InputMaybe; not?: InputMaybe; @@ -2038,7 +2150,6 @@ export type ConnectedAccountOrderByInput = { authFailedAt?: InputMaybe; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** The account handle (email, username, phone number, etc.) */ handle?: InputMaybe; /** Id */ @@ -2058,12 +2169,11 @@ export type ConnectedAccountUpdateInput = { /** Messaging provider access token */ accessToken?: InputMaybe; /** Account Owner id foreign key */ - accountOwnerId?: InputMaybe; + accountOwnerId?: InputMaybe; /** Auth failed at */ authFailedAt?: InputMaybe; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** The account handle (email, username, phone number, etc.) */ handle?: InputMaybe; /** Id */ @@ -2080,50 +2190,27 @@ export type ConnectedAccountUpdateInput = { export type Currency = { amountMicros?: Maybe; - createdAt?: Maybe; currencyCode?: Maybe; - deletedAt?: Maybe; - id?: Maybe; - updatedAt?: Maybe; }; export type CurrencyCreateInput = { amountMicros?: InputMaybe; - createdAt?: InputMaybe; currencyCode?: InputMaybe; - deletedAt?: InputMaybe; - id?: InputMaybe; - updatedAt?: InputMaybe; }; export type CurrencyFilterInput = { amountMicros?: InputMaybe; - and?: InputMaybe>>; - createdAt?: InputMaybe; currencyCode?: InputMaybe; - deletedAt?: InputMaybe; - id?: InputMaybe; - not?: InputMaybe; - or?: InputMaybe>>; - updatedAt?: InputMaybe; }; export type CurrencyOrderByInput = { amountMicros?: InputMaybe; - createdAt?: InputMaybe; currencyCode?: InputMaybe; - deletedAt?: InputMaybe; - id?: InputMaybe; - updatedAt?: InputMaybe; }; export type CurrencyUpdateInput = { amountMicros?: InputMaybe; - createdAt?: InputMaybe; currencyCode?: InputMaybe; - deletedAt?: InputMaybe; - id?: InputMaybe; - updatedAt?: InputMaybe; }; export type CursorPaging = { @@ -2150,154 +2237,22 @@ export type DateFilter = { export type DeleteOneObjectInput = { /** The id of the record to delete. */ - id: Scalars['ID']; + id: Scalars['UUID']; }; +/** Schema update on a table */ +export enum DistantTableUpdate { + ColumnsAdded = 'COLUMNS_ADDED', + ColumnsDeleted = 'COLUMNS_DELETED', + ColumnsTypeChanged = 'COLUMNS_TYPE_CHANGED', + TableDeleted = 'TABLE_DELETED' +} + export type EmailPasswordResetLink = { /** Boolean that confirms query was dispatched */ success: Scalars['Boolean']; }; -/** An event */ -export type Event = { - /** Event company */ - company?: Maybe; - /** Event company id foreign key */ - companyId?: Maybe; - /** Creation date */ - createdAt?: Maybe; - deletedAt?: Maybe; - /** Id */ - id?: Maybe; - /** Event name/type */ - name?: Maybe; - /** Events opportunity */ - opportunity?: Maybe; - /** Events opportunity id foreign key */ - opportunityId?: Maybe; - /** Event person */ - person?: Maybe; - /** Event person id foreign key */ - personId?: Maybe; - /** Json value for event details */ - properties?: Maybe; - /** Update date */ - updatedAt?: Maybe; - /** Event workspace member */ - workspaceMember?: Maybe; - /** Event workspace member id foreign key */ - workspaceMemberId?: Maybe; -}; - -/** An event */ -export type EventConnection = { - edges?: Maybe>; - pageInfo?: Maybe; - /** Total number of records in the connection */ - totalCount?: Maybe; -}; - -/** An event */ -export type EventCreateInput = { - /** Event company id foreign key */ - companyId?: InputMaybe; - /** Creation date */ - createdAt?: InputMaybe; - deletedAt?: InputMaybe; - /** Id */ - id?: InputMaybe; - /** Event name/type */ - name?: InputMaybe; - /** Events opportunity id foreign key */ - opportunityId?: InputMaybe; - /** Event person id foreign key */ - personId?: InputMaybe; - /** Json value for event details */ - properties?: InputMaybe; - /** Update date */ - updatedAt?: InputMaybe; - /** Event workspace member id foreign key */ - workspaceMemberId?: InputMaybe; -}; - -/** An event */ -export type EventEdge = { - cursor?: Maybe; - node?: Maybe; -}; - -/** An event */ -export type EventFilterInput = { - and?: InputMaybe>>; - /** Event company id foreign key */ - companyId?: InputMaybe; - /** Creation date */ - createdAt?: InputMaybe; - deletedAt?: InputMaybe; - /** Id */ - id?: InputMaybe; - /** Event name/type */ - name?: InputMaybe; - not?: InputMaybe; - /** Events opportunity id foreign key */ - opportunityId?: InputMaybe; - or?: InputMaybe>>; - /** Event person id foreign key */ - personId?: InputMaybe; - /** Json value for event details */ - properties?: InputMaybe; - /** Update date */ - updatedAt?: InputMaybe; - /** Event workspace member id foreign key */ - workspaceMemberId?: InputMaybe; -}; - -/** An event */ -export type EventOrderByInput = { - /** Event company id foreign key */ - companyId?: InputMaybe; - /** Creation date */ - createdAt?: InputMaybe; - deletedAt?: InputMaybe; - /** Id */ - id?: InputMaybe; - /** Event name/type */ - name?: InputMaybe; - /** Events opportunity id foreign key */ - opportunityId?: InputMaybe; - /** Event person id foreign key */ - personId?: InputMaybe; - /** Json value for event details */ - properties?: InputMaybe; - /** Update date */ - updatedAt?: InputMaybe; - /** Event workspace member id foreign key */ - workspaceMemberId?: InputMaybe; -}; - -/** An event */ -export type EventUpdateInput = { - /** Event company id foreign key */ - companyId?: InputMaybe; - /** Creation date */ - createdAt?: InputMaybe; - deletedAt?: InputMaybe; - /** Id */ - id?: InputMaybe; - /** Event name/type */ - name?: InputMaybe; - /** Events opportunity id foreign key */ - opportunityId?: InputMaybe; - /** Event person id foreign key */ - personId?: InputMaybe; - /** Json value for event details */ - properties?: InputMaybe; - /** Update date */ - updatedAt?: InputMaybe; - /** Event workspace member id foreign key */ - workspaceMemberId?: InputMaybe; -}; - export type ExchangeAuthCode = { accessToken: AuthToken; loginToken: AuthToken; @@ -2309,20 +2264,19 @@ export type Favorite = { /** Favorite company */ company?: Maybe; /** Favorite company id foreign key */ - companyId?: Maybe; + companyId?: Maybe; /** Creation date */ createdAt?: Maybe; - deletedAt?: Maybe; /** Id */ - id?: Maybe; + id?: Maybe; /** Favorite opportunity */ opportunity?: Maybe; /** Favorite opportunity id foreign key */ - opportunityId?: Maybe; + opportunityId?: Maybe; /** Favorite person */ person?: Maybe; /** Favorite person id foreign key */ - personId?: Maybe; + personId?: Maybe; /** Favorite position */ position?: Maybe; /** Update date */ @@ -2330,7 +2284,7 @@ export type Favorite = { /** Favorite workspace member */ workspaceMember?: Maybe; /** Favorite workspace member id foreign key */ - workspaceMemberId?: Maybe; + workspaceMemberId?: Maybe; }; /** A favorite */ @@ -2344,22 +2298,21 @@ export type FavoriteConnection = { /** A favorite */ export type FavoriteCreateInput = { /** Favorite company id foreign key */ - companyId?: InputMaybe; + companyId?: InputMaybe; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Id */ id?: InputMaybe; /** Favorite opportunity id foreign key */ - opportunityId?: InputMaybe; + opportunityId?: InputMaybe; /** Favorite person id foreign key */ - personId?: InputMaybe; + personId?: InputMaybe; /** Favorite position */ position?: InputMaybe; /** Update date */ updatedAt?: InputMaybe; /** Favorite workspace member id foreign key */ - workspaceMemberId: Scalars['ID']; + workspaceMemberId: Scalars['UUID']; }; /** A favorite */ @@ -2372,24 +2325,23 @@ export type FavoriteEdge = { export type FavoriteFilterInput = { and?: InputMaybe>>; /** Favorite company id foreign key */ - companyId?: InputMaybe; + companyId?: InputMaybe; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Id */ - id?: InputMaybe; + id?: InputMaybe; not?: InputMaybe; /** Favorite opportunity id foreign key */ - opportunityId?: InputMaybe; + opportunityId?: InputMaybe; or?: InputMaybe>>; /** Favorite person id foreign key */ - personId?: InputMaybe; + personId?: InputMaybe; /** Favorite position */ position?: InputMaybe; /** Update date */ updatedAt?: InputMaybe; /** Favorite workspace member id foreign key */ - workspaceMemberId?: InputMaybe; + workspaceMemberId?: InputMaybe; }; /** A favorite */ @@ -2398,7 +2350,6 @@ export type FavoriteOrderByInput = { companyId?: InputMaybe; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Id */ id?: InputMaybe; /** Favorite opportunity id foreign key */ @@ -2416,26 +2367,25 @@ export type FavoriteOrderByInput = { /** A favorite */ export type FavoriteUpdateInput = { /** Favorite company id foreign key */ - companyId?: InputMaybe; + companyId?: InputMaybe; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Id */ id?: InputMaybe; /** Favorite opportunity id foreign key */ - opportunityId?: InputMaybe; + opportunityId?: InputMaybe; /** Favorite person id foreign key */ - personId?: InputMaybe; + personId?: InputMaybe; /** Favorite position */ position?: InputMaybe; /** Update date */ updatedAt?: InputMaybe; /** Favorite workspace member id foreign key */ - workspaceMemberId?: InputMaybe; + workspaceMemberId?: InputMaybe; }; export type FeatureFlag = { - id: Scalars['ID']; + id: Scalars['UUID']; key: Scalars['String']; value: Scalars['Boolean']; workspaceId: Scalars['String']; @@ -2443,7 +2393,7 @@ export type FeatureFlag = { export type FeatureFlagFilter = { and?: InputMaybe>; - id?: InputMaybe; + id?: InputMaybe; or?: InputMaybe>; }; @@ -2474,6 +2424,7 @@ export enum FieldMetadataType { Email = 'EMAIL', FullName = 'FULL_NAME', Link = 'LINK', + Links = 'LINKS', MultiSelect = 'MULTI_SELECT', Number = 'NUMBER', Numeric = 'NUMERIC', @@ -2515,68 +2466,39 @@ export type FloatFilter = { }; export type FullName = { - createdAt?: Maybe; - deletedAt?: Maybe; firstName: Scalars['String']; - id?: Maybe; lastName: Scalars['String']; - updatedAt?: Maybe; }; export type FullNameCreateInput = { - createdAt?: InputMaybe; - deletedAt?: InputMaybe; firstName?: InputMaybe; - id?: InputMaybe; lastName?: InputMaybe; - updatedAt?: InputMaybe; }; export type FullNameFilterInput = { - and?: InputMaybe>>; - createdAt?: InputMaybe; - deletedAt?: InputMaybe; firstName?: InputMaybe; - id?: InputMaybe; lastName?: InputMaybe; - not?: InputMaybe; - or?: InputMaybe>>; - updatedAt?: InputMaybe; }; export type FullNameOrderByInput = { - createdAt?: InputMaybe; - deletedAt?: InputMaybe; firstName?: InputMaybe; - id?: InputMaybe; lastName?: InputMaybe; - updatedAt?: InputMaybe; }; export type FullNameUpdateInput = { - createdAt?: InputMaybe; - deletedAt?: InputMaybe; firstName?: InputMaybe; - id?: InputMaybe; lastName?: InputMaybe; - updatedAt?: InputMaybe; }; -export type IdFilterComparison = { +export type IdFilter = { eq?: InputMaybe; gt?: InputMaybe; gte?: InputMaybe; - iLike?: InputMaybe; - in?: InputMaybe>; - is?: InputMaybe; - isNot?: InputMaybe; - like?: InputMaybe; + in?: InputMaybe>>; + is?: InputMaybe; lt?: InputMaybe; lte?: InputMaybe; neq?: InputMaybe; - notILike?: InputMaybe; - notIn?: InputMaybe>; - notLike?: InputMaybe; }; export type InvalidatePassword = { @@ -2585,32 +2507,17 @@ export type InvalidatePassword = { }; export type Link = { - createdAt?: Maybe; - deletedAt?: Maybe; - id?: Maybe; label?: Maybe; - updatedAt?: Maybe; url?: Maybe; }; export type LinkCreateInput = { - createdAt?: InputMaybe; - deletedAt?: InputMaybe; - id?: InputMaybe; label?: InputMaybe; - updatedAt?: InputMaybe; url?: InputMaybe; }; export type LinkFilterInput = { - and?: InputMaybe>>; - createdAt?: InputMaybe; - deletedAt?: InputMaybe; - id?: InputMaybe; label?: InputMaybe; - not?: InputMaybe; - or?: InputMaybe>>; - updatedAt?: InputMaybe; url?: InputMaybe; }; @@ -2620,23 +2527,45 @@ export type LinkMetadata = { }; export type LinkOrderByInput = { - createdAt?: InputMaybe; - deletedAt?: InputMaybe; - id?: InputMaybe; label?: InputMaybe; - updatedAt?: InputMaybe; url?: InputMaybe; }; export type LinkUpdateInput = { - createdAt?: InputMaybe; - deletedAt?: InputMaybe; - id?: InputMaybe; label?: InputMaybe; - updatedAt?: InputMaybe; url?: InputMaybe; }; +export type Links = { + primaryLinkLabel?: Maybe; + primaryLinkUrl?: Maybe; + secondaryLinks?: Maybe; +}; + +export type LinksCreateInput = { + primaryLinkLabel?: InputMaybe; + primaryLinkUrl?: InputMaybe; + secondaryLinks?: InputMaybe; +}; + +export type LinksFilterInput = { + primaryLinkLabel?: InputMaybe; + primaryLinkUrl?: InputMaybe; + secondaryLinks?: InputMaybe; +}; + +export type LinksOrderByInput = { + primaryLinkLabel?: InputMaybe; + primaryLinkUrl?: InputMaybe; + secondaryLinks?: InputMaybe; +}; + +export type LinksUpdateInput = { + primaryLinkLabel?: InputMaybe; + primaryLinkUrl?: InputMaybe; + secondaryLinks?: InputMaybe; +}; + export type LoginToken = { loginToken: AuthToken; }; @@ -2645,13 +2574,12 @@ export type LoginToken = { export type Message = { /** Creation date */ createdAt?: Maybe; - deletedAt?: Maybe; /** Message Direction */ direction?: Maybe; /** Message id from the message header */ headerMessageId?: Maybe; /** Id */ - id?: Maybe; + id?: Maybe; /** Messages from the channel. */ messageChannelMessageAssociations?: Maybe; /** Message Participants */ @@ -2659,7 +2587,7 @@ export type Message = { /** Message Thread Id */ messageThread?: Maybe; /** Message Thread Id id foreign key */ - messageThreadId?: Maybe; + messageThreadId?: Maybe; /** The date the message was received */ receivedAt?: Maybe; /** Subject */ @@ -2676,8 +2604,9 @@ export type MessageMessageChannelMessageAssociationsArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; @@ -2687,8 +2616,9 @@ export type MessageMessageParticipantsArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; @@ -2697,26 +2627,33 @@ export type MessageChannel = { /** Connected Account */ connectedAccount?: Maybe; /** Connected Account id foreign key */ - connectedAccountId?: Maybe; + connectedAccountId?: Maybe; /** Creation date */ createdAt?: Maybe; - deletedAt?: Maybe; /** Handle */ handle?: Maybe; /** Id */ - id?: Maybe; + id?: Maybe; /** Is Contact Auto Creation Enabled */ isContactAutoCreationEnabled?: Maybe; + /** Is Sync Enabled */ + isSyncEnabled?: Maybe; /** Messages from the channel. */ messageChannelMessageAssociations?: Maybe; /** Ongoing sync started at */ ongoingSyncStartedAt?: Maybe; /** Last sync cursor */ syncCursor?: Maybe; - /** Last sync status */ + /** Sync status */ syncStatus?: Maybe; + /** Sync sub status */ + syncSubStatus?: Maybe; /** Last sync date */ syncedAt?: Maybe; + /** Throttle Failure Count */ + throttleFailureCount?: Maybe; + /** Throttle Pause Until */ + throttlePauseUntil?: Maybe; /** Channel Type */ type?: Maybe; /** Update date */ @@ -2731,8 +2668,9 @@ export type MessageChannelMessageChannelMessageAssociationsArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; @@ -2747,24 +2685,31 @@ export type MessageChannelConnection = { /** Message Channels */ export type MessageChannelCreateInput = { /** Connected Account id foreign key */ - connectedAccountId: Scalars['ID']; + connectedAccountId: Scalars['UUID']; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Handle */ handle?: InputMaybe; /** Id */ id?: InputMaybe; /** Is Contact Auto Creation Enabled */ isContactAutoCreationEnabled?: InputMaybe; + /** Is Sync Enabled */ + isSyncEnabled?: InputMaybe; /** Ongoing sync started at */ ongoingSyncStartedAt?: InputMaybe; /** Last sync cursor */ syncCursor?: InputMaybe; - /** Last sync status */ + /** Sync status */ syncStatus?: InputMaybe; + /** Sync sub status */ + syncSubStatus?: InputMaybe; /** Last sync date */ syncedAt?: InputMaybe; + /** Throttle Failure Count */ + throttleFailureCount?: InputMaybe; + /** Throttle Pause Until */ + throttlePauseUntil?: InputMaybe; /** Channel Type */ type?: InputMaybe; /** Update date */ @@ -2783,26 +2728,33 @@ export type MessageChannelEdge = { export type MessageChannelFilterInput = { and?: InputMaybe>>; /** Connected Account id foreign key */ - connectedAccountId?: InputMaybe; + connectedAccountId?: InputMaybe; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Handle */ handle?: InputMaybe; /** Id */ - id?: InputMaybe; + id?: InputMaybe; /** Is Contact Auto Creation Enabled */ isContactAutoCreationEnabled?: InputMaybe; + /** Is Sync Enabled */ + isSyncEnabled?: InputMaybe; not?: InputMaybe; /** Ongoing sync started at */ ongoingSyncStartedAt?: InputMaybe; or?: InputMaybe>>; /** Last sync cursor */ syncCursor?: InputMaybe; - /** Last sync status */ + /** Sync status */ syncStatus?: InputMaybe; + /** Sync sub status */ + syncSubStatus?: InputMaybe; /** Last sync date */ syncedAt?: InputMaybe; + /** Throttle Failure Count */ + throttleFailureCount?: InputMaybe; + /** Throttle Pause Until */ + throttlePauseUntil?: InputMaybe; /** Channel Type */ type?: InputMaybe; /** Update date */ @@ -2815,25 +2767,24 @@ export type MessageChannelFilterInput = { export type MessageChannelMessageAssociation = { /** Creation date */ createdAt?: Maybe; - deletedAt?: Maybe; /** Id */ - id?: Maybe; + id?: Maybe; /** Message Id */ message?: Maybe; /** Message Channel Id */ messageChannel?: Maybe; /** Message Channel Id id foreign key */ - messageChannelId?: Maybe; + messageChannelId?: Maybe; /** Message id from the messaging provider */ messageExternalId?: Maybe; /** Message Id id foreign key */ - messageId?: Maybe; + messageId?: Maybe; /** Message Thread Id */ messageThread?: Maybe; /** Thread id from the messaging provider */ messageThreadExternalId?: Maybe; /** Message Thread Id id foreign key */ - messageThreadId?: Maybe; + messageThreadId?: Maybe; /** Update date */ updatedAt?: Maybe; }; @@ -2850,19 +2801,18 @@ export type MessageChannelMessageAssociationConnection = { export type MessageChannelMessageAssociationCreateInput = { /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Id */ id?: InputMaybe; /** Message Channel Id id foreign key */ - messageChannelId?: InputMaybe; + messageChannelId?: InputMaybe; /** Message id from the messaging provider */ messageExternalId?: InputMaybe; /** Message Id id foreign key */ - messageId?: InputMaybe; + messageId?: InputMaybe; /** Thread id from the messaging provider */ messageThreadExternalId?: InputMaybe; /** Message Thread Id id foreign key */ - messageThreadId?: InputMaybe; + messageThreadId?: InputMaybe; /** Update date */ updatedAt?: InputMaybe; }; @@ -2878,19 +2828,18 @@ export type MessageChannelMessageAssociationFilterInput = { and?: InputMaybe>>; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Id */ - id?: InputMaybe; + id?: InputMaybe; /** Message Channel Id id foreign key */ - messageChannelId?: InputMaybe; + messageChannelId?: InputMaybe; /** Message id from the messaging provider */ messageExternalId?: InputMaybe; /** Message Id id foreign key */ - messageId?: InputMaybe; + messageId?: InputMaybe; /** Thread id from the messaging provider */ messageThreadExternalId?: InputMaybe; /** Message Thread Id id foreign key */ - messageThreadId?: InputMaybe; + messageThreadId?: InputMaybe; not?: InputMaybe; or?: InputMaybe>>; /** Update date */ @@ -2901,7 +2850,6 @@ export type MessageChannelMessageAssociationFilterInput = { export type MessageChannelMessageAssociationOrderByInput = { /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Id */ id?: InputMaybe; /** Message Channel Id id foreign key */ @@ -2922,19 +2870,18 @@ export type MessageChannelMessageAssociationOrderByInput = { export type MessageChannelMessageAssociationUpdateInput = { /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Id */ id?: InputMaybe; /** Message Channel Id id foreign key */ - messageChannelId?: InputMaybe; + messageChannelId?: InputMaybe; /** Message id from the messaging provider */ messageExternalId?: InputMaybe; /** Message Id id foreign key */ - messageId?: InputMaybe; + messageId?: InputMaybe; /** Thread id from the messaging provider */ messageThreadExternalId?: InputMaybe; /** Message Thread Id id foreign key */ - messageThreadId?: InputMaybe; + messageThreadId?: InputMaybe; /** Update date */ updatedAt?: InputMaybe; }; @@ -2945,21 +2892,28 @@ export type MessageChannelOrderByInput = { connectedAccountId?: InputMaybe; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Handle */ handle?: InputMaybe; /** Id */ id?: InputMaybe; /** Is Contact Auto Creation Enabled */ isContactAutoCreationEnabled?: InputMaybe; + /** Is Sync Enabled */ + isSyncEnabled?: InputMaybe; /** Ongoing sync started at */ ongoingSyncStartedAt?: InputMaybe; /** Last sync cursor */ syncCursor?: InputMaybe; - /** Last sync status */ + /** Sync status */ syncStatus?: InputMaybe; + /** Sync sub status */ + syncSubStatus?: InputMaybe; /** Last sync date */ syncedAt?: InputMaybe; + /** Throttle Failure Count */ + throttleFailureCount?: InputMaybe; + /** Throttle Pause Until */ + throttlePauseUntil?: InputMaybe; /** Channel Type */ type?: InputMaybe; /** Update date */ @@ -2968,10 +2922,18 @@ export type MessageChannelOrderByInput = { visibility?: InputMaybe; }; -/** Last sync status */ +/** Sync status */ export enum MessageChannelSyncStatusEnum { + /** Completed */ + Completed = 'COMPLETED', /** Failed */ Failed = 'FAILED', + /** Failed Insufficient Permissions */ + FailedInsufficientPermissions = 'FAILED_INSUFFICIENT_PERMISSIONS', + /** Failed Unknown */ + FailedUnknown = 'FAILED_UNKNOWN', + /** Not Synced */ + NotSynced = 'NOT_SYNCED', /** Ongoing */ Ongoing = 'ONGOING', /** Pending */ @@ -2987,6 +2949,29 @@ export type MessageChannelSyncStatusEnumFilter = { neq?: InputMaybe; }; +/** Sync sub status */ +export enum MessageChannelSyncSubStatusEnum { + /** Failed */ + Failed = 'FAILED', + /** Full messages list fetch pending */ + FullMessageListFetchPending = 'FULL_MESSAGE_LIST_FETCH_PENDING', + /** Messages import ongoing */ + MessagesImportOngoing = 'MESSAGES_IMPORT_ONGOING', + /** Messages import pending */ + MessagesImportPending = 'MESSAGES_IMPORT_PENDING', + /** Messages list fetch ongoing */ + MessageListFetchOngoing = 'MESSAGE_LIST_FETCH_ONGOING', + /** Partial messages list fetch pending */ + PartialMessageListFetchPending = 'PARTIAL_MESSAGE_LIST_FETCH_PENDING' +} + +export type MessageChannelSyncSubStatusEnumFilter = { + eq?: InputMaybe; + in?: InputMaybe>>; + is?: InputMaybe; + neq?: InputMaybe; +}; + /** Channel Type */ export enum MessageChannelTypeEnum { /** Email */ @@ -3005,24 +2990,31 @@ export type MessageChannelTypeEnumFilter = { /** Message Channels */ export type MessageChannelUpdateInput = { /** Connected Account id foreign key */ - connectedAccountId?: InputMaybe; + connectedAccountId?: InputMaybe; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Handle */ handle?: InputMaybe; /** Id */ id?: InputMaybe; /** Is Contact Auto Creation Enabled */ isContactAutoCreationEnabled?: InputMaybe; + /** Is Sync Enabled */ + isSyncEnabled?: InputMaybe; /** Ongoing sync started at */ ongoingSyncStartedAt?: InputMaybe; /** Last sync cursor */ syncCursor?: InputMaybe; - /** Last sync status */ + /** Sync status */ syncStatus?: InputMaybe; + /** Sync sub status */ + syncSubStatus?: InputMaybe; /** Last sync date */ syncedAt?: InputMaybe; + /** Throttle Failure Count */ + throttleFailureCount?: InputMaybe; + /** Throttle Pause Until */ + throttlePauseUntil?: InputMaybe; /** Channel Type */ type?: InputMaybe; /** Update date */ @@ -3031,14 +3023,21 @@ export type MessageChannelUpdateInput = { visibility?: InputMaybe; }; +/** Visibility of the message channel */ +export enum MessageChannelVisibility { + Metadata = 'METADATA', + ShareEverything = 'SHARE_EVERYTHING', + Subject = 'SUBJECT' +} + /** Visibility */ export enum MessageChannelVisibilityEnum { /** Metadata */ - Metadata = 'metadata', + Metadata = 'METADATA', /** Share Everything */ - ShareEverything = 'share_everything', + ShareEverything = 'SHARE_EVERYTHING', /** Subject */ - Subject = 'subject' + Subject = 'SUBJECT' } export type MessageChannelVisibilityEnumFilter = { @@ -3060,7 +3059,6 @@ export type MessageConnection = { export type MessageCreateInput = { /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Message Direction */ direction?: InputMaybe; /** Message id from the message header */ @@ -3068,7 +3066,7 @@ export type MessageCreateInput = { /** Id */ id?: InputMaybe; /** Message Thread Id id foreign key */ - messageThreadId?: InputMaybe; + messageThreadId?: InputMaybe; /** The date the message was received */ receivedAt?: InputMaybe; /** Subject */ @@ -3105,15 +3103,14 @@ export type MessageFilterInput = { and?: InputMaybe>>; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Message Direction */ direction?: InputMaybe; /** Message id from the message header */ headerMessageId?: InputMaybe; /** Id */ - id?: InputMaybe; + id?: InputMaybe; /** Message Thread Id id foreign key */ - messageThreadId?: InputMaybe; + messageThreadId?: InputMaybe; not?: InputMaybe; or?: InputMaybe>>; /** The date the message was received */ @@ -3130,7 +3127,6 @@ export type MessageFilterInput = { export type MessageOrderByInput = { /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Message Direction */ direction?: InputMaybe; /** Message id from the message header */ @@ -3153,21 +3149,20 @@ export type MessageOrderByInput = { export type MessageParticipant = { /** Creation date */ createdAt?: Maybe; - deletedAt?: Maybe; /** Display Name */ displayName?: Maybe; /** Handle */ handle?: Maybe; /** Id */ - id?: Maybe; + id?: Maybe; /** Message */ message?: Maybe; /** Message id foreign key */ - messageId?: Maybe; + messageId?: Maybe; /** Person */ person?: Maybe; /** Person id foreign key */ - personId?: Maybe; + personId?: Maybe; /** Role */ role?: Maybe; /** Update date */ @@ -3175,7 +3170,7 @@ export type MessageParticipant = { /** Workspace member */ workspaceMember?: Maybe; /** Workspace member id foreign key */ - workspaceMemberId?: Maybe; + workspaceMemberId?: Maybe; }; /** Message Participants */ @@ -3190,7 +3185,6 @@ export type MessageParticipantConnection = { export type MessageParticipantCreateInput = { /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Display Name */ displayName?: InputMaybe; /** Handle */ @@ -3198,15 +3192,15 @@ export type MessageParticipantCreateInput = { /** Id */ id?: InputMaybe; /** Message id foreign key */ - messageId: Scalars['ID']; + messageId: Scalars['UUID']; /** Person id foreign key */ - personId?: InputMaybe; + personId?: InputMaybe; /** Role */ role?: InputMaybe; /** Update date */ updatedAt?: InputMaybe; /** Workspace member id foreign key */ - workspaceMemberId?: InputMaybe; + workspaceMemberId?: InputMaybe; }; /** Message Participants */ @@ -3220,32 +3214,30 @@ export type MessageParticipantFilterInput = { and?: InputMaybe>>; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Display Name */ displayName?: InputMaybe; /** Handle */ handle?: InputMaybe; /** Id */ - id?: InputMaybe; + id?: InputMaybe; /** Message id foreign key */ - messageId?: InputMaybe; + messageId?: InputMaybe; not?: InputMaybe; or?: InputMaybe>>; /** Person id foreign key */ - personId?: InputMaybe; + personId?: InputMaybe; /** Role */ role?: InputMaybe; /** Update date */ updatedAt?: InputMaybe; /** Workspace member id foreign key */ - workspaceMemberId?: InputMaybe; + workspaceMemberId?: InputMaybe; }; /** Message Participants */ export type MessageParticipantOrderByInput = { /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Display Name */ displayName?: InputMaybe; /** Handle */ @@ -3287,7 +3279,6 @@ export type MessageParticipantRoleEnumFilter = { export type MessageParticipantUpdateInput = { /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Display Name */ displayName?: InputMaybe; /** Handle */ @@ -3295,25 +3286,24 @@ export type MessageParticipantUpdateInput = { /** Id */ id?: InputMaybe; /** Message id foreign key */ - messageId?: InputMaybe; + messageId?: InputMaybe; /** Person id foreign key */ - personId?: InputMaybe; + personId?: InputMaybe; /** Role */ role?: InputMaybe; /** Update date */ updatedAt?: InputMaybe; /** Workspace member id foreign key */ - workspaceMemberId?: InputMaybe; + workspaceMemberId?: InputMaybe; }; /** Message Thread */ export type MessageThread = { /** Creation date */ createdAt?: Maybe; - deletedAt?: Maybe; /** Id */ - id?: Maybe; - /** Messages from the channel. */ + id?: Maybe; + /** Messages from the channel */ messageChannelMessageAssociations?: Maybe; /** Messages from the thread. */ messages?: Maybe; @@ -3327,8 +3317,9 @@ export type MessageThreadMessageChannelMessageAssociationsArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; @@ -3338,8 +3329,9 @@ export type MessageThreadMessagesArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; @@ -3355,7 +3347,6 @@ export type MessageThreadConnection = { export type MessageThreadCreateInput = { /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Id */ id?: InputMaybe; /** Update date */ @@ -3373,9 +3364,8 @@ export type MessageThreadFilterInput = { and?: InputMaybe>>; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Id */ - id?: InputMaybe; + id?: InputMaybe; not?: InputMaybe; or?: InputMaybe>>; /** Update date */ @@ -3386,7 +3376,6 @@ export type MessageThreadFilterInput = { export type MessageThreadOrderByInput = { /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Id */ id?: InputMaybe; /** Update date */ @@ -3397,7 +3386,6 @@ export type MessageThreadOrderByInput = { export type MessageThreadUpdateInput = { /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Id */ id?: InputMaybe; /** Update date */ @@ -3408,7 +3396,6 @@ export type MessageThreadUpdateInput = { export type MessageUpdateInput = { /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Message Direction */ direction?: InputMaybe; /** Message id from the message header */ @@ -3416,7 +3403,7 @@ export type MessageUpdateInput = { /** Id */ id?: InputMaybe; /** Message Thread Id id foreign key */ - messageThreadId?: InputMaybe; + messageThreadId?: InputMaybe; /** The date the message was received */ receivedAt?: InputMaybe; /** Subject */ @@ -3429,6 +3416,7 @@ export type MessageUpdateInput = { export type Mutation = { activateWorkspace: Workspace; + addUserToWorkspace: User; authorizeApp: AuthorizeApp; challenge: LoginToken; checkoutSession: SessionEntity; @@ -3440,6 +3428,8 @@ export type Mutation = { createApiKeys?: Maybe>; createAttachment?: Maybe; createAttachments?: Maybe>; + createAuditLog?: Maybe; + createAuditLogs?: Maybe>; createBlocklist?: Maybe; createBlocklists?: Maybe>; createCalendarChannel?: Maybe; @@ -3456,8 +3446,6 @@ export type Mutation = { createCompany?: Maybe; createConnectedAccount?: Maybe; createConnectedAccounts?: Maybe>; - createEvent?: Maybe; - createEvents?: Maybe>; createFavorite?: Maybe; createFavorites?: Maybe>; createMessage?: Maybe; @@ -3476,6 +3464,8 @@ export type Mutation = { createOpportunity?: Maybe; createPeople?: Maybe>; createPerson?: Maybe; + createTimelineActivities?: Maybe>; + createTimelineActivity?: Maybe; createView?: Maybe; createViewField?: Maybe; createViewFields?: Maybe>; @@ -3496,6 +3486,8 @@ export type Mutation = { deleteApiKeys?: Maybe>; deleteAttachment?: Maybe; deleteAttachments?: Maybe>; + deleteAuditLog?: Maybe; + deleteAuditLogs?: Maybe>; deleteBlocklist?: Maybe; deleteBlocklists?: Maybe>; deleteCalendarChannel?: Maybe; @@ -3513,8 +3505,6 @@ export type Mutation = { deleteConnectedAccount?: Maybe; deleteConnectedAccounts?: Maybe>; deleteCurrentWorkspace: Workspace; - deleteEvent?: Maybe; - deleteEvents?: Maybe>; deleteFavorite?: Maybe; deleteFavorites?: Maybe>; deleteMessage?: Maybe; @@ -3532,6 +3522,8 @@ export type Mutation = { deleteOpportunity?: Maybe; deletePeople?: Maybe>; deletePerson?: Maybe; + deleteTimelineActivities?: Maybe>; + deleteTimelineActivity?: Maybe; deleteUser: User; deleteView?: Maybe; deleteViewField?: Maybe; @@ -3551,6 +3543,7 @@ export type Mutation = { executeQuickActionOnActivityTarget?: Maybe; executeQuickActionOnApiKey?: Maybe; executeQuickActionOnAttachment?: Maybe; + executeQuickActionOnAuditLog?: Maybe; executeQuickActionOnBlocklist?: Maybe; executeQuickActionOnCalendarChannel?: Maybe; executeQuickActionOnCalendarChannelEventAssociation?: Maybe; @@ -3559,7 +3552,6 @@ export type Mutation = { executeQuickActionOnComment?: Maybe; executeQuickActionOnCompany?: Maybe; executeQuickActionOnConnectedAccount?: Maybe; - executeQuickActionOnEvent?: Maybe; executeQuickActionOnFavorite?: Maybe; executeQuickActionOnMessage?: Maybe; executeQuickActionOnMessageChannel?: Maybe; @@ -3568,6 +3560,7 @@ export type Mutation = { executeQuickActionOnMessageThread?: Maybe; executeQuickActionOnOpportunity?: Maybe; executeQuickActionOnPerson?: Maybe; + executeQuickActionOnTimelineActivity?: Maybe; executeQuickActionOnView?: Maybe; executeQuickActionOnViewField?: Maybe; executeQuickActionOnViewFilter?: Maybe; @@ -3580,6 +3573,7 @@ export type Mutation = { impersonate: Verify; renewToken: AuthTokens; signUp: LoginToken; + skipSyncEmailOnboardingStep: SkipSyncEmailOnboardingStep; track: Analytics; updateActivities?: Maybe>; updateActivity?: Maybe; @@ -3589,6 +3583,8 @@ export type Mutation = { updateApiKeys?: Maybe>; updateAttachment?: Maybe; updateAttachments?: Maybe>; + updateAuditLog?: Maybe; + updateAuditLogs?: Maybe>; updateBillingSubscription: UpdateBillingEntity; updateBlocklist?: Maybe; updateBlocklists?: Maybe>; @@ -3606,8 +3602,6 @@ export type Mutation = { updateCompany?: Maybe; updateConnectedAccount?: Maybe; updateConnectedAccounts?: Maybe>; - updateEvent?: Maybe; - updateEvents?: Maybe>; updateFavorite?: Maybe; updateFavorites?: Maybe>; updateMessage?: Maybe; @@ -3626,6 +3620,8 @@ export type Mutation = { updatePasswordViaResetToken: InvalidatePassword; updatePeople?: Maybe>; updatePerson?: Maybe; + updateTimelineActivities?: Maybe>; + updateTimelineActivity?: Maybe; updateView?: Maybe; updateViewField?: Maybe; updateViewFields?: Maybe>; @@ -3652,14 +3648,20 @@ export type MutationActivateWorkspaceArgs = { }; +export type MutationAddUserToWorkspaceArgs = { + inviteHash: Scalars['String']; +}; + + export type MutationAuthorizeAppArgs = { clientId: Scalars['String']; codeChallenge?: InputMaybe; - redirectUrl?: InputMaybe; + redirectUrl: Scalars['String']; }; export type MutationChallengeArgs = { + captchaToken?: InputMaybe; email: Scalars['String']; password: Scalars['String']; }; @@ -3711,6 +3713,16 @@ export type MutationCreateAttachmentsArgs = { }; +export type MutationCreateAuditLogArgs = { + data?: InputMaybe; +}; + + +export type MutationCreateAuditLogsArgs = { + data?: InputMaybe>; +}; + + export type MutationCreateBlocklistArgs = { data?: InputMaybe; }; @@ -3791,16 +3803,6 @@ export type MutationCreateConnectedAccountsArgs = { }; -export type MutationCreateEventArgs = { - data?: InputMaybe; -}; - - -export type MutationCreateEventsArgs = { - data?: InputMaybe>; -}; - - export type MutationCreateFavoriteArgs = { data?: InputMaybe; }; @@ -3881,6 +3883,16 @@ export type MutationCreatePersonArgs = { }; +export type MutationCreateTimelineActivitiesArgs = { + data?: InputMaybe>; +}; + + +export type MutationCreateTimelineActivityArgs = { + data?: InputMaybe; +}; + + export type MutationCreateViewArgs = { data?: InputMaybe; }; @@ -3981,6 +3993,16 @@ export type MutationDeleteAttachmentsArgs = { }; +export type MutationDeleteAuditLogArgs = { + id?: InputMaybe; +}; + + +export type MutationDeleteAuditLogsArgs = { + filter?: InputMaybe; +}; + + export type MutationDeleteBlocklistArgs = { id?: InputMaybe; }; @@ -4061,16 +4083,6 @@ export type MutationDeleteConnectedAccountsArgs = { }; -export type MutationDeleteEventArgs = { - id?: InputMaybe; -}; - - -export type MutationDeleteEventsArgs = { - filter?: InputMaybe; -}; - - export type MutationDeleteFavoriteArgs = { id?: InputMaybe; }; @@ -4156,6 +4168,16 @@ export type MutationDeletePersonArgs = { }; +export type MutationDeleteTimelineActivitiesArgs = { + filter?: InputMaybe; +}; + + +export type MutationDeleteTimelineActivityArgs = { + id?: InputMaybe; +}; + + export type MutationDeleteViewArgs = { id?: InputMaybe; }; @@ -4248,6 +4270,11 @@ export type MutationExecuteQuickActionOnAttachmentArgs = { }; +export type MutationExecuteQuickActionOnAuditLogArgs = { + id?: InputMaybe; +}; + + export type MutationExecuteQuickActionOnBlocklistArgs = { id?: InputMaybe; }; @@ -4288,11 +4315,6 @@ export type MutationExecuteQuickActionOnConnectedAccountArgs = { }; -export type MutationExecuteQuickActionOnEventArgs = { - id?: InputMaybe; -}; - - export type MutationExecuteQuickActionOnFavoriteArgs = { id?: InputMaybe; }; @@ -4333,6 +4355,11 @@ export type MutationExecuteQuickActionOnPersonArgs = { }; +export type MutationExecuteQuickActionOnTimelineActivityArgs = { + id?: InputMaybe; +}; + + export type MutationExecuteQuickActionOnViewArgs = { id?: InputMaybe; }; @@ -4385,6 +4412,7 @@ export type MutationRenewTokenArgs = { export type MutationSignUpArgs = { + captchaToken?: InputMaybe; email: Scalars['String']; password: Scalars['String']; workspaceInviteHash?: InputMaybe; @@ -4445,6 +4473,18 @@ export type MutationUpdateAttachmentsArgs = { }; +export type MutationUpdateAuditLogArgs = { + data?: InputMaybe; + id?: InputMaybe; +}; + + +export type MutationUpdateAuditLogsArgs = { + data?: InputMaybe; + filter?: InputMaybe; +}; + + export type MutationUpdateBlocklistArgs = { data?: InputMaybe; id?: InputMaybe; @@ -4541,18 +4581,6 @@ export type MutationUpdateConnectedAccountsArgs = { }; -export type MutationUpdateEventArgs = { - data?: InputMaybe; - id?: InputMaybe; -}; - - -export type MutationUpdateEventsArgs = { - data?: InputMaybe; - filter?: InputMaybe; -}; - - export type MutationUpdateFavoriteArgs = { data?: InputMaybe; id?: InputMaybe; @@ -4625,6 +4653,11 @@ export type MutationUpdateMessagesArgs = { }; +export type MutationUpdateOneObjectArgs = { + input: UpdateOneObjectInput; +}; + + export type MutationUpdateOpportunitiesArgs = { data?: InputMaybe; filter?: InputMaybe; @@ -4655,6 +4688,18 @@ export type MutationUpdatePersonArgs = { }; +export type MutationUpdateTimelineActivitiesArgs = { + data?: InputMaybe; + filter?: InputMaybe; +}; + + +export type MutationUpdateTimelineActivityArgs = { + data?: InputMaybe; + id?: InputMaybe; +}; + + export type MutationUpdateViewArgs = { data?: InputMaybe; id?: InputMaybe; @@ -4778,35 +4823,34 @@ export type Opportunity = { activityTargets?: Maybe; /** Opportunity amount */ amount?: Maybe; - /** Attachments linked to the opportunity. */ + /** Attachments linked to the opportunity */ attachments?: Maybe; /** Opportunity close date */ closeDate?: Maybe; /** Opportunity company */ company?: Maybe; /** Opportunity company id foreign key */ - companyId?: Maybe; + companyId?: Maybe; /** Creation date */ createdAt?: Maybe; - deletedAt?: Maybe; - /** Events linked to the opportunity. */ - events?: Maybe; /** Favorites linked to the opportunity */ favorites?: Maybe; /** Id */ - id?: Maybe; + id?: Maybe; /** The opportunity name */ name?: Maybe; /** Opportunity point of contact */ pointOfContact?: Maybe; /** Opportunity point of contact id foreign key */ - pointOfContactId?: Maybe; + pointOfContactId?: Maybe; /** Opportunity record position */ position?: Maybe; /** Opportunity probability */ probability?: Maybe; /** Opportunity stage */ stage?: Maybe; + /** Timeline Activities linked to the opportunity. */ + timelineActivities?: Maybe; /** Update date */ updatedAt?: Maybe; }; @@ -4817,8 +4861,9 @@ export type OpportunityActivityTargetsArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; @@ -4828,33 +4873,36 @@ export type OpportunityAttachmentsArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; -/** An opportunity */ -export type OpportunityEventsArgs = { - after?: InputMaybe; - before?: InputMaybe; - filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; - orderBy?: InputMaybe; -}; - - /** An opportunity */ export type OpportunityFavoritesArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; + +/** An opportunity */ +export type OpportunityTimelineActivitiesArgs = { + after?: InputMaybe; + before?: InputMaybe; + filter?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; + orderBy?: InputMaybe; +}; + /** An opportunity */ export type OpportunityConnection = { edges?: Maybe>; @@ -4870,16 +4918,15 @@ export type OpportunityCreateInput = { /** Opportunity close date */ closeDate?: InputMaybe; /** Opportunity company id foreign key */ - companyId?: InputMaybe; + companyId?: InputMaybe; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Id */ id?: InputMaybe; /** The opportunity name */ name?: InputMaybe; /** Opportunity point of contact id foreign key */ - pointOfContactId?: InputMaybe; + pointOfContactId?: InputMaybe; /** Opportunity record position */ position?: InputMaybe; /** Opportunity probability */ @@ -4904,18 +4951,17 @@ export type OpportunityFilterInput = { /** Opportunity close date */ closeDate?: InputMaybe; /** Opportunity company id foreign key */ - companyId?: InputMaybe; + companyId?: InputMaybe; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Id */ - id?: InputMaybe; + id?: InputMaybe; /** The opportunity name */ name?: InputMaybe; not?: InputMaybe; or?: InputMaybe>>; /** Opportunity point of contact id foreign key */ - pointOfContactId?: InputMaybe; + pointOfContactId?: InputMaybe; /** Opportunity record position */ position?: InputMaybe; /** Opportunity probability */ @@ -4936,7 +4982,6 @@ export type OpportunityOrderByInput = { companyId?: InputMaybe; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Id */ id?: InputMaybe; /** The opportunity name */ @@ -4981,16 +5026,15 @@ export type OpportunityUpdateInput = { /** Opportunity close date */ closeDate?: InputMaybe; /** Opportunity company id foreign key */ - companyId?: InputMaybe; + companyId?: InputMaybe; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Id */ id?: InputMaybe; /** The opportunity name */ name?: InputMaybe; /** Opportunity point of contact id foreign key */ - pointOfContactId?: InputMaybe; + pointOfContactId?: InputMaybe; /** Opportunity record position */ position?: InputMaybe; /** Opportunity probability */ @@ -5039,18 +5083,15 @@ export type Person = { /** Contact’s company */ company?: Maybe; /** Contact’s company id foreign key */ - companyId?: Maybe; + companyId?: Maybe; /** Creation date */ createdAt?: Maybe; - deletedAt?: Maybe; /** Contact’s Email */ email?: Maybe; - /** Events linked to the company */ - events?: Maybe; /** Favorites linked to the contact */ favorites?: Maybe; /** Id */ - id?: Maybe; + id?: Maybe; /** Contact’s job title */ jobTitle?: Maybe; /** Contact’s Linkedin account */ @@ -5065,6 +5106,8 @@ export type Person = { pointOfContactForOpportunities?: Maybe; /** Person record Position */ position?: Maybe; + /** Events linked to the company */ + timelineActivities?: Maybe; /** Update date */ updatedAt?: Maybe; /** Contact’s X/Twitter account */ @@ -5077,8 +5120,9 @@ export type PersonActivityTargetsArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; @@ -5088,8 +5132,9 @@ export type PersonAttachmentsArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; @@ -5099,30 +5144,21 @@ export type PersonCalendarEventParticipantsArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; -/** A person */ -export type PersonEventsArgs = { - after?: InputMaybe; - before?: InputMaybe; - filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; - orderBy?: InputMaybe; -}; - - /** A person */ export type PersonFavoritesArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; @@ -5132,8 +5168,9 @@ export type PersonMessageParticipantsArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; @@ -5143,11 +5180,24 @@ export type PersonPointOfContactForOpportunitiesArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; + +/** A person */ +export type PersonTimelineActivitiesArgs = { + after?: InputMaybe; + before?: InputMaybe; + filter?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; + orderBy?: InputMaybe; +}; + /** A person */ export type PersonConnection = { edges?: Maybe>; @@ -5163,10 +5213,9 @@ export type PersonCreateInput = { /** Contact’s city */ city?: InputMaybe; /** Contact’s company id foreign key */ - companyId?: InputMaybe; + companyId?: InputMaybe; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Contact’s Email */ email?: InputMaybe; /** Id */ @@ -5201,14 +5250,13 @@ export type PersonFilterInput = { /** Contact’s city */ city?: InputMaybe; /** Contact’s company id foreign key */ - companyId?: InputMaybe; + companyId?: InputMaybe; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Contact’s Email */ email?: InputMaybe; /** Id */ - id?: InputMaybe; + id?: InputMaybe; /** Contact’s job title */ jobTitle?: InputMaybe; /** Contact’s Linkedin account */ @@ -5237,7 +5285,6 @@ export type PersonOrderByInput = { companyId?: InputMaybe; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Contact’s Email */ email?: InputMaybe; /** Id */ @@ -5265,10 +5312,9 @@ export type PersonUpdateInput = { /** Contact’s city */ city?: InputMaybe; /** Contact’s company id foreign key */ - companyId?: InputMaybe; + companyId?: InputMaybe; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Contact’s Email */ email?: InputMaybe; /** Id */ @@ -5314,6 +5360,9 @@ export type Query = { attachment?: Maybe; attachmentDuplicates?: Maybe; attachments?: Maybe; + auditLog?: Maybe; + auditLogDuplicates?: Maybe; + auditLogs?: Maybe; billingPortalSession: SessionEntity; blocklist?: Maybe; blocklistDuplicates?: Maybe; @@ -5344,9 +5393,6 @@ export type Query = { connectedAccounts?: Maybe; currentUser: User; currentWorkspace: Workspace; - event?: Maybe; - eventDuplicates?: Maybe; - events?: Maybe; favorite?: Maybe; favoriteDuplicates?: Maybe; favorites?: Maybe; @@ -5379,6 +5425,9 @@ export type Query = { people?: Maybe; person?: Maybe; personDuplicates?: Maybe; + timelineActivities?: Maybe; + timelineActivity?: Maybe; + timelineActivityDuplicates?: Maybe; validatePasswordResetToken: ValidatePasswordResetToken; view?: Maybe; viewDuplicates?: Maybe; @@ -5405,8 +5454,9 @@ export type QueryActivitiesArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; @@ -5437,8 +5487,9 @@ export type QueryActivityTargetsArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; @@ -5458,8 +5509,9 @@ export type QueryApiKeysArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; @@ -5479,12 +5531,35 @@ export type QueryAttachmentsArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; +export type QueryAuditLogArgs = { + filter?: InputMaybe; +}; + + +export type QueryAuditLogDuplicatesArgs = { + data?: InputMaybe; + id?: InputMaybe; +}; + + +export type QueryAuditLogsArgs = { + after?: InputMaybe; + before?: InputMaybe; + filter?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; + orderBy?: InputMaybe; +}; + + export type QueryBillingPortalSessionArgs = { returnUrlPath?: InputMaybe; }; @@ -5505,8 +5580,9 @@ export type QueryBlocklistsArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; @@ -5537,8 +5613,9 @@ export type QueryCalendarChannelEventAssociationsArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; @@ -5547,8 +5624,9 @@ export type QueryCalendarChannelsArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; @@ -5579,8 +5657,9 @@ export type QueryCalendarEventParticipantsArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; @@ -5589,13 +5668,15 @@ export type QueryCalendarEventsArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; export type QueryCheckUserExistsArgs = { + captchaToken?: InputMaybe; email: Scalars['String']; }; @@ -5620,8 +5701,9 @@ export type QueryCommentsArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; @@ -5630,8 +5712,9 @@ export type QueryCompaniesArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; @@ -5662,33 +5745,13 @@ export type QueryConnectedAccountsArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; -export type QueryEventArgs = { - filter?: InputMaybe; -}; - - -export type QueryEventDuplicatesArgs = { - data?: InputMaybe; - id?: InputMaybe; -}; - - -export type QueryEventsArgs = { - after?: InputMaybe; - before?: InputMaybe; - filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; - orderBy?: InputMaybe; -}; - - export type QueryFavoriteArgs = { filter?: InputMaybe; }; @@ -5704,8 +5767,9 @@ export type QueryFavoritesArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; @@ -5721,7 +5785,7 @@ export type QueryGetProductPricesArgs = { export type QueryGetTimelineCalendarEventsFromCompanyIdArgs = { - companyId: Scalars['ID']; + companyId: Scalars['UUID']; page: Scalars['Int']; pageSize: Scalars['Int']; }; @@ -5730,12 +5794,12 @@ export type QueryGetTimelineCalendarEventsFromCompanyIdArgs = { export type QueryGetTimelineCalendarEventsFromPersonIdArgs = { page: Scalars['Int']; pageSize: Scalars['Int']; - personId: Scalars['ID']; + personId: Scalars['UUID']; }; export type QueryGetTimelineThreadsFromCompanyIdArgs = { - companyId: Scalars['ID']; + companyId: Scalars['UUID']; page: Scalars['Int']; pageSize: Scalars['Int']; }; @@ -5744,7 +5808,7 @@ export type QueryGetTimelineThreadsFromCompanyIdArgs = { export type QueryGetTimelineThreadsFromPersonIdArgs = { page: Scalars['Int']; pageSize: Scalars['Int']; - personId: Scalars['ID']; + personId: Scalars['UUID']; }; @@ -5779,8 +5843,9 @@ export type QueryMessageChannelMessageAssociationsArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; @@ -5789,8 +5854,9 @@ export type QueryMessageChannelsArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; @@ -5816,8 +5882,9 @@ export type QueryMessageParticipantsArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; @@ -5837,8 +5904,9 @@ export type QueryMessageThreadsArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; @@ -5847,8 +5915,9 @@ export type QueryMessagesArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; @@ -5857,8 +5926,9 @@ export type QueryOpportunitiesArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; @@ -5878,8 +5948,9 @@ export type QueryPeopleArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; @@ -5895,6 +5966,28 @@ export type QueryPersonDuplicatesArgs = { }; +export type QueryTimelineActivitiesArgs = { + after?: InputMaybe; + before?: InputMaybe; + filter?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; + orderBy?: InputMaybe; +}; + + +export type QueryTimelineActivityArgs = { + filter?: InputMaybe; +}; + + +export type QueryTimelineActivityDuplicatesArgs = { + data?: InputMaybe; + id?: InputMaybe; +}; + + export type QueryValidatePasswordResetTokenArgs = { passwordResetToken: Scalars['String']; }; @@ -5926,8 +6019,9 @@ export type QueryViewFieldsArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; @@ -5947,8 +6041,9 @@ export type QueryViewFiltersArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; @@ -5968,8 +6063,9 @@ export type QueryViewSortsArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; @@ -5978,8 +6074,9 @@ export type QueryViewsArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; @@ -5999,8 +6096,9 @@ export type QueryWebhooksArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; @@ -6020,8 +6118,9 @@ export type QueryWorkspaceMembersArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; @@ -6038,6 +6137,7 @@ export type RelationConnection = { export type RelationDefinition = { direction: RelationDefinitionType; + relationId: Scalars['UUID']; sourceFieldMetadata: Field; sourceObjectMetadata: Object; targetFieldMetadata: Field; @@ -6052,20 +6152,10 @@ export enum RelationDefinitionType { OneToOne = 'ONE_TO_ONE' } -export type RelationDeleteResponse = { - createdAt?: Maybe; - fromFieldMetadataId?: Maybe; - fromObjectMetadataId?: Maybe; - id?: Maybe; - relationType?: Maybe; - toFieldMetadataId?: Maybe; - toObjectMetadataId?: Maybe; - updatedAt?: Maybe; -}; - /** Type of the relation */ export enum RelationMetadataType { ManyToMany = 'MANY_TO_MANY', + ManyToOne = 'MANY_TO_ONE', OneToMany = 'ONE_TO_MANY', OneToOne = 'ONE_TO_ONE' } @@ -6076,12 +6166,17 @@ export type RemoteServer = { foreignDataWrapperOptions?: Maybe; foreignDataWrapperType: Scalars['String']; id: Scalars['ID']; + label: Scalars['String']; + schema?: Maybe; updatedAt: Scalars['DateTime']; + userMappingOptions?: Maybe; }; export type RemoteTable = { + id?: Maybe; name: Scalars['String']; - schema: Scalars['String']; + schema?: Maybe; + schemaPendingUpdates?: Maybe>; status: RemoteTableStatus; }; @@ -6093,12 +6188,19 @@ export enum RemoteTableStatus { export type Sentry = { dsn?: Maybe; + environment?: Maybe; + release?: Maybe; }; export type SessionEntity = { url?: Maybe; }; +export type SkipSyncEmailOnboardingStep = { + /** Boolean that confirms query was dispatched */ + success: Scalars['Boolean']; +}; + /** Sort Directions */ export enum SortDirection { Asc = 'ASC', @@ -6137,19 +6239,194 @@ export type Telemetry = { enabled: Scalars['Boolean']; }; +/** Aggregated / filtered event to be displayed on the timeline */ +export type TimelineActivity = { + /** Event company */ + company?: Maybe; + /** Event company id foreign key */ + companyId?: Maybe; + /** Creation date */ + createdAt?: Maybe; + /** Creation date */ + happensAt?: Maybe; + /** Id */ + id?: Maybe; + /** inked Object Metadata Id */ + linkedObjectMetadataId?: Maybe; + /** Cached record name */ + linkedRecordCachedName?: Maybe; + /** Linked Record id */ + linkedRecordId?: Maybe; + /** Event name */ + name?: Maybe; + /** Event opportunity */ + opportunity?: Maybe; + /** Event opportunity id foreign key */ + opportunityId?: Maybe; + /** Event person */ + person?: Maybe; + /** Event person id foreign key */ + personId?: Maybe; + /** Json value for event details */ + properties?: Maybe; + /** Update date */ + updatedAt?: Maybe; + /** Event workspace member */ + workspaceMember?: Maybe; + /** Event workspace member id foreign key */ + workspaceMemberId?: Maybe; +}; + +/** Aggregated / filtered event to be displayed on the timeline */ +export type TimelineActivityConnection = { + edges?: Maybe>; + pageInfo?: Maybe; + /** Total number of records in the connection */ + totalCount?: Maybe; +}; + +/** Aggregated / filtered event to be displayed on the timeline */ +export type TimelineActivityCreateInput = { + /** Event company id foreign key */ + companyId?: InputMaybe; + /** Creation date */ + createdAt?: InputMaybe; + /** Creation date */ + happensAt?: InputMaybe; + /** Id */ + id?: InputMaybe; + /** inked Object Metadata Id */ + linkedObjectMetadataId?: InputMaybe; + /** Cached record name */ + linkedRecordCachedName?: InputMaybe; + /** Linked Record id */ + linkedRecordId?: InputMaybe; + /** Event name */ + name?: InputMaybe; + /** Event opportunity id foreign key */ + opportunityId?: InputMaybe; + /** Event person id foreign key */ + personId?: InputMaybe; + /** Json value for event details */ + properties?: InputMaybe; + /** Update date */ + updatedAt?: InputMaybe; + /** Event workspace member id foreign key */ + workspaceMemberId?: InputMaybe; +}; + +/** Aggregated / filtered event to be displayed on the timeline */ +export type TimelineActivityEdge = { + cursor?: Maybe; + node?: Maybe; +}; + +/** Aggregated / filtered event to be displayed on the timeline */ +export type TimelineActivityFilterInput = { + and?: InputMaybe>>; + /** Event company id foreign key */ + companyId?: InputMaybe; + /** Creation date */ + createdAt?: InputMaybe; + /** Creation date */ + happensAt?: InputMaybe; + /** Id */ + id?: InputMaybe; + /** inked Object Metadata Id */ + linkedObjectMetadataId?: InputMaybe; + /** Cached record name */ + linkedRecordCachedName?: InputMaybe; + /** Linked Record id */ + linkedRecordId?: InputMaybe; + /** Event name */ + name?: InputMaybe; + not?: InputMaybe; + /** Event opportunity id foreign key */ + opportunityId?: InputMaybe; + or?: InputMaybe>>; + /** Event person id foreign key */ + personId?: InputMaybe; + /** Json value for event details */ + properties?: InputMaybe; + /** Update date */ + updatedAt?: InputMaybe; + /** Event workspace member id foreign key */ + workspaceMemberId?: InputMaybe; +}; + +/** Aggregated / filtered event to be displayed on the timeline */ +export type TimelineActivityOrderByInput = { + /** Event company id foreign key */ + companyId?: InputMaybe; + /** Creation date */ + createdAt?: InputMaybe; + /** Creation date */ + happensAt?: InputMaybe; + /** Id */ + id?: InputMaybe; + /** inked Object Metadata Id */ + linkedObjectMetadataId?: InputMaybe; + /** Cached record name */ + linkedRecordCachedName?: InputMaybe; + /** Linked Record id */ + linkedRecordId?: InputMaybe; + /** Event name */ + name?: InputMaybe; + /** Event opportunity id foreign key */ + opportunityId?: InputMaybe; + /** Event person id foreign key */ + personId?: InputMaybe; + /** Json value for event details */ + properties?: InputMaybe; + /** Update date */ + updatedAt?: InputMaybe; + /** Event workspace member id foreign key */ + workspaceMemberId?: InputMaybe; +}; + +/** Aggregated / filtered event to be displayed on the timeline */ +export type TimelineActivityUpdateInput = { + /** Event company id foreign key */ + companyId?: InputMaybe; + /** Creation date */ + createdAt?: InputMaybe; + /** Creation date */ + happensAt?: InputMaybe; + /** Id */ + id?: InputMaybe; + /** inked Object Metadata Id */ + linkedObjectMetadataId?: InputMaybe; + /** Cached record name */ + linkedRecordCachedName?: InputMaybe; + /** Linked Record id */ + linkedRecordId?: InputMaybe; + /** Event name */ + name?: InputMaybe; + /** Event opportunity id foreign key */ + opportunityId?: InputMaybe; + /** Event person id foreign key */ + personId?: InputMaybe; + /** Json value for event details */ + properties?: InputMaybe; + /** Update date */ + updatedAt?: InputMaybe; + /** Event workspace member id foreign key */ + workspaceMemberId?: InputMaybe; +}; + export type TimelineCalendarEvent = { conferenceLink: LinkMetadata; conferenceSolution: Scalars['String']; description: Scalars['String']; endsAt: Scalars['DateTime']; - id: Scalars['ID']; + id: Scalars['UUID']; isCanceled: Scalars['Boolean']; isFullDay: Scalars['Boolean']; location: Scalars['String']; participants: Array; startsAt: Scalars['DateTime']; title: Scalars['String']; - visibility: TimelineCalendarEventVisibility; + visibility: CalendarChannelVisibility; }; export type TimelineCalendarEventParticipant = { @@ -6158,16 +6435,10 @@ export type TimelineCalendarEventParticipant = { firstName: Scalars['String']; handle: Scalars['String']; lastName: Scalars['String']; - personId?: Maybe; - workspaceMemberId?: Maybe; + personId?: Maybe; + workspaceMemberId?: Maybe; }; -/** Visibility of the calendar event */ -export enum TimelineCalendarEventVisibility { - Metadata = 'METADATA', - ShareEverything = 'SHARE_EVERYTHING' -} - export type TimelineCalendarEventsWithTotal = { timelineCalendarEvents: Array; totalNumberOfCalendarEvents: Scalars['Int']; @@ -6175,7 +6446,7 @@ export type TimelineCalendarEventsWithTotal = { export type TimelineThread = { firstParticipant: TimelineThreadParticipant; - id: Scalars['ID']; + id: Scalars['UUID']; lastMessageBody: Scalars['String']; lastMessageReceivedAt: Scalars['DateTime']; lastTwoParticipants: Array; @@ -6183,7 +6454,7 @@ export type TimelineThread = { participantCount: Scalars['Float']; read: Scalars['Boolean']; subject: Scalars['String']; - visibility: Scalars['String']; + visibility: MessageChannelVisibility; }; export type TimelineThreadParticipant = { @@ -6192,8 +6463,8 @@ export type TimelineThreadParticipant = { firstName: Scalars['String']; handle: Scalars['String']; lastName: Scalars['String']; - personId?: Maybe; - workspaceMemberId?: Maybe; + personId?: Maybe; + workspaceMemberId?: Maybe; }; export type TimelineThreadsWithTotal = { @@ -6205,11 +6476,21 @@ export type TransientToken = { transientToken: AuthToken; }; -export type UuidFilter = { +export type UuidFilterComparison = { eq?: InputMaybe; - in?: InputMaybe>>; - is?: InputMaybe; + gt?: InputMaybe; + gte?: InputMaybe; + iLike?: InputMaybe; + in?: InputMaybe>; + is?: InputMaybe; + isNot?: InputMaybe; + like?: InputMaybe; + lt?: InputMaybe; + lte?: InputMaybe; neq?: InputMaybe; + notILike?: InputMaybe; + notIn?: InputMaybe>; + notLike?: InputMaybe; }; export type UpdateBillingEntity = { @@ -6217,6 +6498,24 @@ export type UpdateBillingEntity = { success: Scalars['Boolean']; }; +export type UpdateObjectPayload = { + description?: InputMaybe; + icon?: InputMaybe; + imageIdentifierFieldMetadataId?: InputMaybe; + isActive?: InputMaybe; + labelIdentifierFieldMetadataId?: InputMaybe; + labelPlural?: InputMaybe; + labelSingular?: InputMaybe; + namePlural?: InputMaybe; + nameSingular?: InputMaybe; +}; + +export type UpdateOneObjectInput = { + /** The id of the object to update */ + id: Scalars['UUID']; + update: UpdateObjectPayload; +}; + export type UpdateWorkspaceInput = { allowImpersonation?: InputMaybe; displayName?: InputMaybe; @@ -6236,11 +6535,14 @@ export type User = { email: Scalars['String']; emailVerified: Scalars['Boolean']; firstName: Scalars['String']; - id: Scalars['ID']; + id: Scalars['UUID']; lastName: Scalars['String']; passwordHash?: Maybe; + /** @deprecated field migrated into the AppTokens Table ref: https://github.com/twentyhq/twenty/issues/5021 */ passwordResetToken?: Maybe; + /** @deprecated field migrated into the AppTokens Table ref: https://github.com/twentyhq/twenty/issues/5021 */ passwordResetTokenExpiresAt?: Maybe; + state: UserState; supportUserHash?: Maybe; updatedAt: Scalars['DateTime']; workspaceMember?: Maybe; @@ -6258,10 +6560,18 @@ export type UserExists = { exists: Scalars['Boolean']; }; +export type UserMappingOptionsUser = { + user?: Maybe; +}; + +export type UserState = { + skipSyncEmailOnboardingStep?: Maybe; +}; + export type UserWorkspace = { createdAt: Scalars['DateTime']; deletedAt?: Maybe; - id: Scalars['ID']; + id: Scalars['UUID']; updatedAt: Scalars['DateTime']; user: User; userId: Scalars['String']; @@ -6283,11 +6593,10 @@ export type Verify = { export type View = { /** Creation date */ createdAt?: Maybe; - deletedAt?: Maybe; /** View icon */ icon?: Maybe; /** Id */ - id?: Maybe; + id?: Maybe; /** Describes if the view is in compact mode */ isCompact?: Maybe; /** View Kanban column field */ @@ -6297,7 +6606,7 @@ export type View = { /** View name */ name?: Maybe; /** View target object */ - objectMetadataId?: Maybe; + objectMetadataId?: Maybe; /** View position */ position?: Maybe; /** View type */ @@ -6318,8 +6627,9 @@ export type ViewViewFieldsArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; @@ -6329,8 +6639,9 @@ export type ViewViewFiltersArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; @@ -6340,8 +6651,9 @@ export type ViewViewSortsArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; @@ -6357,7 +6669,6 @@ export type ViewConnection = { export type ViewCreateInput = { /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** View icon */ icon?: InputMaybe; /** Id */ @@ -6371,7 +6682,7 @@ export type ViewCreateInput = { /** View name */ name?: InputMaybe; /** View target object */ - objectMetadataId: Scalars['ID']; + objectMetadataId: Scalars['UUID']; /** View position */ position?: InputMaybe; /** View type */ @@ -6390,11 +6701,10 @@ export type ViewEdge = { export type ViewField = { /** Creation date */ createdAt?: Maybe; - deletedAt?: Maybe; /** View Field target field */ - fieldMetadataId?: Maybe; + fieldMetadataId?: Maybe; /** Id */ - id?: Maybe; + id?: Maybe; /** View Field visibility */ isVisible?: Maybe; /** View Field position */ @@ -6406,7 +6716,7 @@ export type ViewField = { /** View Field related view */ view?: Maybe; /** View Field related view id foreign key */ - viewId?: Maybe; + viewId?: Maybe; }; /** (System) View Fields */ @@ -6421,9 +6731,8 @@ export type ViewFieldConnection = { export type ViewFieldCreateInput = { /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** View Field target field */ - fieldMetadataId: Scalars['ID']; + fieldMetadataId: Scalars['UUID']; /** Id */ id?: InputMaybe; /** View Field visibility */ @@ -6435,7 +6744,7 @@ export type ViewFieldCreateInput = { /** Update date */ updatedAt?: InputMaybe; /** View Field related view id foreign key */ - viewId?: InputMaybe; + viewId?: InputMaybe; }; /** (System) View Fields */ @@ -6449,11 +6758,10 @@ export type ViewFieldFilterInput = { and?: InputMaybe>>; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** View Field target field */ - fieldMetadataId?: InputMaybe; + fieldMetadataId?: InputMaybe; /** Id */ - id?: InputMaybe; + id?: InputMaybe; /** View Field visibility */ isVisible?: InputMaybe; not?: InputMaybe; @@ -6465,14 +6773,13 @@ export type ViewFieldFilterInput = { /** Update date */ updatedAt?: InputMaybe; /** View Field related view id foreign key */ - viewId?: InputMaybe; + viewId?: InputMaybe; }; /** (System) View Fields */ export type ViewFieldOrderByInput = { /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** View Field target field */ fieldMetadataId?: InputMaybe; /** Id */ @@ -6493,9 +6800,8 @@ export type ViewFieldOrderByInput = { export type ViewFieldUpdateInput = { /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** View Field target field */ - fieldMetadataId?: InputMaybe; + fieldMetadataId?: InputMaybe; /** Id */ id?: InputMaybe; /** View Field visibility */ @@ -6507,20 +6813,19 @@ export type ViewFieldUpdateInput = { /** Update date */ updatedAt?: InputMaybe; /** View Field related view id foreign key */ - viewId?: InputMaybe; + viewId?: InputMaybe; }; /** (System) View Filters */ export type ViewFilter = { /** Creation date */ createdAt?: Maybe; - deletedAt?: Maybe; /** View Filter Display Value */ displayValue?: Maybe; /** View Filter target field */ - fieldMetadataId?: Maybe; + fieldMetadataId?: Maybe; /** Id */ - id?: Maybe; + id?: Maybe; /** View Filter operand */ operand?: Maybe; /** Update date */ @@ -6530,7 +6835,7 @@ export type ViewFilter = { /** View Filter related view */ view?: Maybe; /** View Filter related view id foreign key */ - viewId?: Maybe; + viewId?: Maybe; }; /** (System) View Filters */ @@ -6545,11 +6850,10 @@ export type ViewFilterConnection = { export type ViewFilterCreateInput = { /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** View Filter Display Value */ displayValue?: InputMaybe; /** View Filter target field */ - fieldMetadataId: Scalars['ID']; + fieldMetadataId: Scalars['UUID']; /** Id */ id?: InputMaybe; /** View Filter operand */ @@ -6559,7 +6863,7 @@ export type ViewFilterCreateInput = { /** View Filter value */ value?: InputMaybe; /** View Filter related view id foreign key */ - viewId?: InputMaybe; + viewId?: InputMaybe; }; /** (System) View Filters */ @@ -6573,13 +6877,12 @@ export type ViewFilterFilterInput = { and?: InputMaybe>>; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** View Filter Display Value */ displayValue?: InputMaybe; /** View Filter target field */ - fieldMetadataId?: InputMaybe; + fieldMetadataId?: InputMaybe; /** Id */ - id?: InputMaybe; + id?: InputMaybe; not?: InputMaybe; /** View Filter operand */ operand?: InputMaybe; @@ -6589,7 +6892,7 @@ export type ViewFilterFilterInput = { /** View Filter value */ value?: InputMaybe; /** View Filter related view id foreign key */ - viewId?: InputMaybe; + viewId?: InputMaybe; }; /** (System) Views */ @@ -6597,11 +6900,10 @@ export type ViewFilterInput = { and?: InputMaybe>>; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** View icon */ icon?: InputMaybe; /** Id */ - id?: InputMaybe; + id?: InputMaybe; /** Describes if the view is in compact mode */ isCompact?: InputMaybe; /** View Kanban column field */ @@ -6612,7 +6914,7 @@ export type ViewFilterInput = { name?: InputMaybe; not?: InputMaybe; /** View target object */ - objectMetadataId?: InputMaybe; + objectMetadataId?: InputMaybe; or?: InputMaybe>>; /** View position */ position?: InputMaybe; @@ -6626,7 +6928,6 @@ export type ViewFilterInput = { export type ViewFilterOrderByInput = { /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** View Filter Display Value */ displayValue?: InputMaybe; /** View Filter target field */ @@ -6647,11 +6948,10 @@ export type ViewFilterOrderByInput = { export type ViewFilterUpdateInput = { /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** View Filter Display Value */ displayValue?: InputMaybe; /** View Filter target field */ - fieldMetadataId?: InputMaybe; + fieldMetadataId?: InputMaybe; /** Id */ id?: InputMaybe; /** View Filter operand */ @@ -6661,7 +6961,7 @@ export type ViewFilterUpdateInput = { /** View Filter value */ value?: InputMaybe; /** View Filter related view id foreign key */ - viewId?: InputMaybe; + viewId?: InputMaybe; }; /** View key */ @@ -6681,7 +6981,6 @@ export type ViewKeyEnumFilter = { export type ViewOrderByInput = { /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** View icon */ icon?: InputMaybe; /** Id */ @@ -6708,19 +7007,18 @@ export type ViewOrderByInput = { export type ViewSort = { /** Creation date */ createdAt?: Maybe; - deletedAt?: Maybe; /** View Sort direction */ direction?: Maybe; /** View Sort target field */ - fieldMetadataId?: Maybe; + fieldMetadataId?: Maybe; /** Id */ - id?: Maybe; + id?: Maybe; /** Update date */ updatedAt?: Maybe; /** View Sort related view */ view?: Maybe; /** View Sort related view id foreign key */ - viewId?: Maybe; + viewId?: Maybe; }; /** (System) View Sorts */ @@ -6735,17 +7033,16 @@ export type ViewSortConnection = { export type ViewSortCreateInput = { /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** View Sort direction */ direction?: InputMaybe; /** View Sort target field */ - fieldMetadataId: Scalars['ID']; + fieldMetadataId: Scalars['UUID']; /** Id */ id?: InputMaybe; /** Update date */ updatedAt?: InputMaybe; /** View Sort related view id foreign key */ - viewId?: InputMaybe; + viewId?: InputMaybe; }; /** (System) View Sorts */ @@ -6759,26 +7056,24 @@ export type ViewSortFilterInput = { and?: InputMaybe>>; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** View Sort direction */ direction?: InputMaybe; /** View Sort target field */ - fieldMetadataId?: InputMaybe; + fieldMetadataId?: InputMaybe; /** Id */ - id?: InputMaybe; + id?: InputMaybe; not?: InputMaybe; or?: InputMaybe>>; /** Update date */ updatedAt?: InputMaybe; /** View Sort related view id foreign key */ - viewId?: InputMaybe; + viewId?: InputMaybe; }; /** (System) View Sorts */ export type ViewSortOrderByInput = { /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** View Sort direction */ direction?: InputMaybe; /** View Sort target field */ @@ -6795,24 +7090,22 @@ export type ViewSortOrderByInput = { export type ViewSortUpdateInput = { /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** View Sort direction */ direction?: InputMaybe; /** View Sort target field */ - fieldMetadataId?: InputMaybe; + fieldMetadataId?: InputMaybe; /** Id */ id?: InputMaybe; /** Update date */ updatedAt?: InputMaybe; /** View Sort related view id foreign key */ - viewId?: InputMaybe; + viewId?: InputMaybe; }; /** (System) Views */ export type ViewUpdateInput = { /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** View icon */ icon?: InputMaybe; /** Id */ @@ -6826,7 +7119,7 @@ export type ViewUpdateInput = { /** View name */ name?: InputMaybe; /** View target object */ - objectMetadataId?: InputMaybe; + objectMetadataId?: InputMaybe; /** View position */ position?: InputMaybe; /** View type */ @@ -6839,9 +7132,8 @@ export type ViewUpdateInput = { export type Webhook = { /** Creation date */ createdAt?: Maybe; - deletedAt?: Maybe; /** Id */ - id?: Maybe; + id?: Maybe; /** Webhook operation */ operation?: Maybe; /** Webhook target url */ @@ -6862,7 +7154,6 @@ export type WebhookConnection = { export type WebhookCreateInput = { /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Id */ id?: InputMaybe; /** Webhook operation */ @@ -6884,9 +7175,8 @@ export type WebhookFilterInput = { and?: InputMaybe>>; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Id */ - id?: InputMaybe; + id?: InputMaybe; not?: InputMaybe; /** Webhook operation */ operation?: InputMaybe; @@ -6901,7 +7191,6 @@ export type WebhookFilterInput = { export type WebhookOrderByInput = { /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Id */ id?: InputMaybe; /** Webhook operation */ @@ -6916,7 +7205,6 @@ export type WebhookOrderByInput = { export type WebhookUpdateInput = { /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Id */ id?: InputMaybe; /** Webhook operation */ @@ -6933,12 +7221,12 @@ export type Workspace = { billingSubscriptions?: Maybe>; createdAt: Scalars['DateTime']; currentBillingSubscription?: Maybe; - currentCacheVersion: Scalars['String']; + currentCacheVersion?: Maybe; deletedAt?: Maybe; displayName?: Maybe; domainName?: Maybe; featureFlags?: Maybe>; - id: Scalars['ID']; + id: Scalars['UUID']; inviteHash?: Maybe; logo?: Maybe; subscriptionStatus: Scalars['String']; @@ -6974,6 +7262,8 @@ export type WorkspaceMember = { accountOwnerForCompanies?: Maybe; /** Activities assigned to the workspace member */ assignedActivities?: Maybe; + /** Audit Logs linked to the workspace member */ + auditLogs?: Maybe; /** Activities created by the workspace member */ authoredActivities?: Maybe; /** Attachments created by the workspace member */ @@ -6992,25 +7282,24 @@ export type WorkspaceMember = { connectedAccounts?: Maybe; /** Creation date */ createdAt?: Maybe; - deletedAt?: Maybe; - /** Events linked to the workspace member */ - events?: Maybe; /** Favorites linked to the workspace member */ favorites?: Maybe; /** Id */ - id: Scalars['ID']; + id: Scalars['UUID']; /** Preferred language */ locale: Scalars['String']; /** Message Participants */ messageParticipants?: Maybe; /** Workspace member name */ name: FullName; + /** Events linked to the workspace member */ + timelineActivities?: Maybe; /** Update date */ updatedAt?: Maybe; /** Related user email address */ userEmail?: Maybe; /** Associated User Id */ - userId?: Maybe; + userId?: Maybe; }; @@ -7019,8 +7308,9 @@ export type WorkspaceMemberAccountOwnerForCompaniesArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; @@ -7030,19 +7320,33 @@ export type WorkspaceMemberAssignedActivitiesArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; +/** A workspace member */ +export type WorkspaceMemberAuditLogsArgs = { + after?: InputMaybe; + before?: InputMaybe; + filter?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; + orderBy?: InputMaybe; +}; + + /** A workspace member */ export type WorkspaceMemberAuthoredActivitiesArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; @@ -7052,8 +7356,9 @@ export type WorkspaceMemberAuthoredAttachmentsArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; @@ -7063,8 +7368,9 @@ export type WorkspaceMemberAuthoredCommentsArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; @@ -7074,8 +7380,9 @@ export type WorkspaceMemberBlocklistArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; @@ -7085,8 +7392,9 @@ export type WorkspaceMemberCalendarEventParticipantsArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; @@ -7096,30 +7404,21 @@ export type WorkspaceMemberConnectedAccountsArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; -/** A workspace member */ -export type WorkspaceMemberEventsArgs = { - after?: InputMaybe; - before?: InputMaybe; - filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; - orderBy?: InputMaybe; -}; - - /** A workspace member */ export type WorkspaceMemberFavoritesArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; @@ -7129,11 +7428,24 @@ export type WorkspaceMemberMessageParticipantsArgs = { after?: InputMaybe; before?: InputMaybe; filter?: InputMaybe; - first?: InputMaybe; - last?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; orderBy?: InputMaybe; }; + +/** A workspace member */ +export type WorkspaceMemberTimelineActivitiesArgs = { + after?: InputMaybe; + before?: InputMaybe; + filter?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; + limit?: InputMaybe; + orderBy?: InputMaybe; +}; + /** A workspace member */ export type WorkspaceMemberConnection = { edges?: Maybe>; @@ -7150,7 +7462,6 @@ export type WorkspaceMemberCreateInput = { colorScheme?: InputMaybe; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Id */ id?: InputMaybe; /** Preferred language */ @@ -7162,7 +7473,7 @@ export type WorkspaceMemberCreateInput = { /** Related user email address */ userEmail?: InputMaybe; /** Associated User Id */ - userId: Scalars['ID']; + userId: Scalars['UUID']; }; /** A workspace member */ @@ -7180,9 +7491,8 @@ export type WorkspaceMemberFilterInput = { colorScheme?: InputMaybe; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Id */ - id?: InputMaybe; + id?: InputMaybe; /** Preferred language */ locale?: InputMaybe; /** Workspace member name */ @@ -7194,7 +7504,7 @@ export type WorkspaceMemberFilterInput = { /** Related user email address */ userEmail?: InputMaybe; /** Associated User Id */ - userId?: InputMaybe; + userId?: InputMaybe; }; /** A workspace member */ @@ -7205,7 +7515,6 @@ export type WorkspaceMemberOrderByInput = { colorScheme?: InputMaybe; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Id */ id?: InputMaybe; /** Preferred language */ @@ -7228,7 +7537,6 @@ export type WorkspaceMemberUpdateInput = { colorScheme?: InputMaybe; /** Creation date */ createdAt?: InputMaybe; - deletedAt?: InputMaybe; /** Id */ id?: InputMaybe; /** Preferred language */ @@ -7240,7 +7548,7 @@ export type WorkspaceMemberUpdateInput = { /** Related user email address */ userEmail?: InputMaybe; /** Associated User Id */ - userId?: InputMaybe; + userId?: InputMaybe; }; export type Field = { @@ -7249,7 +7557,7 @@ export type Field = { description?: Maybe; fromRelationMetadata?: Maybe; icon?: Maybe; - id: Scalars['ID']; + id: Scalars['UUID']; isActive?: Maybe; isCustom?: Maybe; isNullable?: Maybe; @@ -7258,6 +7566,7 @@ export type Field = { name: Scalars['String']; options?: Maybe; relationDefinition?: Maybe; + settings?: Maybe; toRelationMetadata?: Maybe; type: FieldMetadataType; updatedAt: Scalars['DateTime']; @@ -7272,7 +7581,7 @@ export type FieldEdge = { export type FieldFilter = { and?: InputMaybe>; - id?: InputMaybe; + id?: InputMaybe; isActive?: InputMaybe; isCustom?: InputMaybe; isSystem?: InputMaybe; @@ -7285,7 +7594,7 @@ export type Object = { description?: Maybe; fields: ObjectFieldsConnection; icon?: Maybe; - id: Scalars['ID']; + id: Scalars['UUID']; imageIdentifierFieldMetadataId?: Maybe; isActive: Scalars['Boolean']; isCustom: Scalars['Boolean']; @@ -7317,7 +7626,7 @@ export type Relation = { fromFieldMetadataId: Scalars['String']; fromObjectMetadata: Object; fromObjectMetadataId: Scalars['String']; - id: Scalars['ID']; + id: Scalars['UUID']; relationType: RelationMetadataType; toFieldMetadataId: Scalars['String']; toObjectMetadata: Object; @@ -7341,33 +7650,40 @@ export type ExchangeAuthorizationCodeMutationVariables = Exact<{ export type ExchangeAuthorizationCodeMutation = { exchangeAuthorizationCode: { loginToken: { token: string, expiresAt: any }, accessToken: { token: string, expiresAt: any }, refreshToken: { token: string, expiresAt: any } } }; +export type RenewTokenMutationVariables = Exact<{ + appToken: Scalars['String']; +}>; + + +export type RenewTokenMutation = { renewToken: { tokens: { accessToken: { token: string, expiresAt: any }, refreshToken: { token: string, expiresAt: any } } } }; + export type CreateOneCompanyMutationVariables = Exact<{ input: CompanyCreateInput; }>; -export type CreateOneCompanyMutation = { createCompany?: { id?: string | null } | null }; +export type CreateOneCompanyMutation = { createCompany?: { id?: any | null } | null }; export type FindCompanyQueryVariables = Exact<{ filter: CompanyFilterInput; }>; -export type FindCompanyQuery = { companies?: { edges?: Array<{ node?: { name?: string | null, linkedinLink?: { url?: string | null, label?: string | null } | null } | null }> | null } | null }; +export type FindCompanyQuery = { companies?: { edges?: Array<{ node?: { id?: any | null, name?: string | null, linkedinLink?: { url?: string | null, label?: string | null } | null } | null }> | null } | null }; export type CreateOnePersonMutationVariables = Exact<{ input: PersonCreateInput; }>; -export type CreateOnePersonMutation = { createPerson?: { id?: string | null } | null }; +export type CreateOnePersonMutation = { createPerson?: { id?: any | null } | null }; export type FindPersonQueryVariables = Exact<{ filter: PersonFilterInput; }>; -export type FindPersonQuery = { people?: { edges?: Array<{ node?: { name?: { firstName: string, lastName: string } | null, linkedinLink?: { url?: string | null, label?: string | null } | null } | null }> | null } | null }; +export type FindPersonQuery = { people?: { edges?: Array<{ node?: { id?: any | null, name?: { firstName: string, lastName: string } | null, linkedinLink?: { url?: string | null, label?: string | null } | null } | null }> | null } | null }; export const ExchangeAuthorizationCodeDocument = gql` @@ -7420,6 +7736,48 @@ export function useExchangeAuthorizationCodeMutation(baseOptions?: Apollo.Mutati export type ExchangeAuthorizationCodeMutationHookResult = ReturnType; export type ExchangeAuthorizationCodeMutationResult = Apollo.MutationResult; export type ExchangeAuthorizationCodeMutationOptions = Apollo.BaseMutationOptions; +export const RenewTokenDocument = gql` + mutation RenewToken($appToken: String!) { + renewToken(appToken: $appToken) { + tokens { + accessToken { + token + expiresAt + } + refreshToken { + token + expiresAt + } + } + } +} + `; +export type RenewTokenMutationFn = Apollo.MutationFunction; + +/** + * __useRenewTokenMutation__ + * + * To run a mutation, you first call `useRenewTokenMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useRenewTokenMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [renewTokenMutation, { data, loading, error }] = useRenewTokenMutation({ + * variables: { + * appToken: // value for 'appToken' + * }, + * }); + */ +export function useRenewTokenMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(RenewTokenDocument, options); + } +export type RenewTokenMutationHookResult = ReturnType; +export type RenewTokenMutationResult = Apollo.MutationResult; +export type RenewTokenMutationOptions = Apollo.BaseMutationOptions; export const CreateOneCompanyDocument = gql` mutation CreateOneCompany($input: CompanyCreateInput!) { createCompany(data: $input) { @@ -7458,6 +7816,7 @@ export const FindCompanyDocument = gql` companies(filter: $filter) { edges { node { + id name linkedinLink { url @@ -7534,6 +7893,7 @@ export const FindPersonDocument = gql` people(filter: $filter) { edges { node { + id name { firstName lastName diff --git a/packages/twenty-chrome-extension/src/vite-env.d.ts b/packages/twenty-chrome-extension/src/vite-env.d.ts index 8aa66f192..dbc3e503f 100644 --- a/packages/twenty-chrome-extension/src/vite-env.d.ts +++ b/packages/twenty-chrome-extension/src/vite-env.d.ts @@ -4,6 +4,7 @@ interface ImportMetaEnv { readonly VITE_SERVER_BASE_URL: string; readonly VITE_FRONT_BASE_URL: string; readonly VITE_MODE: string; + readonly AUTH_TOKEN: string | undefined; } interface ImportMeta { diff --git a/packages/twenty-front/src/App.tsx b/packages/twenty-front/src/App.tsx index 93b36eb89..140ab0f0d 100644 --- a/packages/twenty-front/src/App.tsx +++ b/packages/twenty-front/src/App.tsx @@ -38,17 +38,18 @@ import { CommandMenuEffect } from '~/effect-components/CommandMenuEffect'; import { GotoHotkeysEffect } from '~/effect-components/GotoHotkeysEffect'; import { PageChangeEffect } from '~/effect-components/PageChangeEffect'; import { Authorize } from '~/pages/auth/Authorize'; -import { ChooseYourPlan } from '~/pages/auth/ChooseYourPlan'; -import { CreateProfile } from '~/pages/auth/CreateProfile'; -import { CreateWorkspace } from '~/pages/auth/CreateWorkspace'; import { Invite } from '~/pages/auth/Invite'; import { PasswordReset } from '~/pages/auth/PasswordReset'; -import { PaymentSuccess } from '~/pages/auth/PaymentSuccess'; import { SignInUp } from '~/pages/auth/SignInUp'; import { ImpersonateEffect } from '~/pages/impersonate/ImpersonateEffect'; import { NotFound } from '~/pages/not-found/NotFound'; import { RecordIndexPage } from '~/pages/object-record/RecordIndexPage'; import { RecordShowPage } from '~/pages/object-record/RecordShowPage'; +import { ChooseYourPlan } from '~/pages/onboarding/ChooseYourPlan'; +import { CreateProfile } from '~/pages/onboarding/CreateProfile'; +import { CreateWorkspace } from '~/pages/onboarding/CreateWorkspace'; +import { PaymentSuccess } from '~/pages/onboarding/PaymentSuccess'; +import { SyncEmails } from '~/pages/onboarding/SyncEmails'; import { SettingsAccounts } from '~/pages/settings/accounts/SettingsAccounts'; import { SettingsAccountsCalendars } from '~/pages/settings/accounts/SettingsAccountsCalendars'; import { SettingsAccountsCalendarsSettings } from '~/pages/settings/accounts/SettingsAccountsCalendarsSettings'; @@ -141,6 +142,7 @@ const createRouter = (isBillingEnabled?: boolean) => } /> } /> } /> + } /> } /> ; }; +/** Visibility of the calendar channel */ +export enum CalendarChannelVisibility { + Metadata = 'METADATA', + ShareEverything = 'SHARE_EVERYTHING' +} + export type Captcha = { __typename?: 'Captcha'; provider?: Maybe; @@ -367,6 +373,13 @@ export type LoginToken = { loginToken: AuthToken; }; +/** Visibility of the message channel */ +export enum MessageChannelVisibility { + Metadata = 'METADATA', + ShareEverything = 'SHARE_EVERYTHING', + Subject = 'SUBJECT' +} + export type Mutation = { __typename?: 'Mutation'; activateWorkspace: Workspace; @@ -394,6 +407,7 @@ export type Mutation = { renewToken: AuthTokens; sendInviteLink: SendInviteLink; signUp: LoginToken; + skipSyncEmailOnboardingStep: SkipSyncEmailOnboardingStep; syncRemoteTable: RemoteTable; syncRemoteTableSchemaChanges: RemoteTable; track: Analytics; @@ -874,6 +888,12 @@ export type SessionEntity = { url?: Maybe; }; +export type SkipSyncEmailOnboardingStep = { + __typename?: 'SkipSyncEmailOnboardingStep'; + /** Boolean that confirms query was dispatched */ + success: Scalars['Boolean']['output']; +}; + /** Sort Directions */ export enum SortDirection { Asc = 'ASC', @@ -911,7 +931,7 @@ export type TimelineCalendarEvent = { participants: Array; startsAt: Scalars['DateTime']['output']; title: Scalars['String']['output']; - visibility: TimelineCalendarEventVisibility; + visibility: CalendarChannelVisibility; }; export type TimelineCalendarEventParticipant = { @@ -925,12 +945,6 @@ export type TimelineCalendarEventParticipant = { workspaceMemberId?: Maybe; }; -/** Visibility of the calendar event */ -export enum TimelineCalendarEventVisibility { - Metadata = 'METADATA', - ShareEverything = 'SHARE_EVERYTHING' -} - export type TimelineCalendarEventsWithTotal = { __typename?: 'TimelineCalendarEventsWithTotal'; timelineCalendarEvents: Array; @@ -948,7 +962,7 @@ export type TimelineThread = { participantCount: Scalars['Float']['output']; read: Scalars['Boolean']['output']; subject: Scalars['String']['output']; - visibility: Scalars['String']['output']; + visibility: MessageChannelVisibility; }; export type TimelineThreadParticipant = { @@ -1070,6 +1084,7 @@ export type User = { passwordResetToken?: Maybe; /** @deprecated field migrated into the AppTokens Table ref: https://github.com/twentyhq/twenty/issues/5021 */ passwordResetTokenExpiresAt?: Maybe; + state: UserState; supportUserHash?: Maybe; updatedAt: Scalars['DateTime']['output']; workspaceMember?: Maybe; @@ -1104,6 +1119,11 @@ export type UserMappingOptionsUser = { user?: Maybe; }; +export type UserState = { + __typename?: 'UserState'; + skipSyncEmailOnboardingStep?: Maybe; +}; + export type UserWorkspace = { __typename?: 'UserWorkspace'; createdAt: Scalars['DateTime']['output']; diff --git a/packages/twenty-front/src/generated/graphql.tsx b/packages/twenty-front/src/generated/graphql.tsx index 0a3ee2229..0341b5146 100644 --- a/packages/twenty-front/src/generated/graphql.tsx +++ b/packages/twenty-front/src/generated/graphql.tsx @@ -117,6 +117,12 @@ export type BooleanFieldComparison = { isNot?: InputMaybe; }; +/** Visibility of the calendar channel */ +export enum CalendarChannelVisibility { + Metadata = 'METADATA', + ShareEverything = 'SHARE_EVERYTHING' +} + export type Captcha = { __typename?: 'Captcha'; provider?: Maybe; @@ -266,6 +272,13 @@ export type LoginToken = { loginToken: AuthToken; }; +/** Visibility of the message channel */ +export enum MessageChannelVisibility { + Metadata = 'METADATA', + ShareEverything = 'SHARE_EVERYTHING', + Subject = 'SUBJECT' +} + export type Mutation = { __typename?: 'Mutation'; activateWorkspace: Workspace; @@ -287,6 +300,7 @@ export type Mutation = { renewToken: AuthTokens; sendInviteLink: SendInviteLink; signUp: LoginToken; + skipSyncEmailOnboardingStep: SkipSyncEmailOnboardingStep; track: Analytics; updateBillingSubscription: UpdateBillingEntity; updateOneObject: Object; @@ -629,6 +643,12 @@ export type SessionEntity = { url?: Maybe; }; +export type SkipSyncEmailOnboardingStep = { + __typename?: 'SkipSyncEmailOnboardingStep'; + /** Boolean that confirms query was dispatched */ + success: Scalars['Boolean']; +}; + /** Sort Directions */ export enum SortDirection { Asc = 'ASC', @@ -666,7 +686,7 @@ export type TimelineCalendarEvent = { participants: Array; startsAt: Scalars['DateTime']; title: Scalars['String']; - visibility: TimelineCalendarEventVisibility; + visibility: CalendarChannelVisibility; }; export type TimelineCalendarEventParticipant = { @@ -680,12 +700,6 @@ export type TimelineCalendarEventParticipant = { workspaceMemberId?: Maybe; }; -/** Visibility of the calendar event */ -export enum TimelineCalendarEventVisibility { - Metadata = 'METADATA', - ShareEverything = 'SHARE_EVERYTHING' -} - export type TimelineCalendarEventsWithTotal = { __typename?: 'TimelineCalendarEventsWithTotal'; timelineCalendarEvents: Array; @@ -703,7 +717,7 @@ export type TimelineThread = { participantCount: Scalars['Float']; read: Scalars['Boolean']; subject: Scalars['String']; - visibility: Scalars['String']; + visibility: MessageChannelVisibility; }; export type TimelineThreadParticipant = { @@ -796,6 +810,7 @@ export type User = { passwordResetToken?: Maybe; /** @deprecated field migrated into the AppTokens Table ref: https://github.com/twentyhq/twenty/issues/5021 */ passwordResetTokenExpiresAt?: Maybe; + state: UserState; supportUserHash?: Maybe; updatedAt: Scalars['DateTime']; workspaceMember?: Maybe; @@ -820,6 +835,11 @@ export type UserMappingOptionsUser = { user?: Maybe; }; +export type UserState = { + __typename?: 'UserState'; + skipSyncEmailOnboardingStep?: Maybe; +}; + export type UserWorkspace = { __typename?: 'UserWorkspace'; createdAt: Scalars['DateTime']; @@ -993,11 +1013,11 @@ export type RelationEdge = { node: Relation; }; -export type TimelineCalendarEventFragmentFragment = { __typename?: 'TimelineCalendarEvent', id: any, title: string, description: string, location: string, startsAt: string, endsAt: string, isFullDay: boolean, visibility: TimelineCalendarEventVisibility, participants: Array<{ __typename?: 'TimelineCalendarEventParticipant', personId?: any | null, workspaceMemberId?: any | null, firstName: string, lastName: string, displayName: string, avatarUrl: string, handle: string }> }; +export type TimelineCalendarEventFragmentFragment = { __typename?: 'TimelineCalendarEvent', id: any, title: string, description: string, location: string, startsAt: string, endsAt: string, isFullDay: boolean, visibility: CalendarChannelVisibility, participants: Array<{ __typename?: 'TimelineCalendarEventParticipant', personId?: any | null, workspaceMemberId?: any | null, firstName: string, lastName: string, displayName: string, avatarUrl: string, handle: string }> }; export type TimelineCalendarEventParticipantFragmentFragment = { __typename?: 'TimelineCalendarEventParticipant', personId?: any | null, workspaceMemberId?: any | null, firstName: string, lastName: string, displayName: string, avatarUrl: string, handle: string }; -export type TimelineCalendarEventsWithTotalFragmentFragment = { __typename?: 'TimelineCalendarEventsWithTotal', totalNumberOfCalendarEvents: number, timelineCalendarEvents: Array<{ __typename?: 'TimelineCalendarEvent', id: any, title: string, description: string, location: string, startsAt: string, endsAt: string, isFullDay: boolean, visibility: TimelineCalendarEventVisibility, participants: Array<{ __typename?: 'TimelineCalendarEventParticipant', personId?: any | null, workspaceMemberId?: any | null, firstName: string, lastName: string, displayName: string, avatarUrl: string, handle: string }> }> }; +export type TimelineCalendarEventsWithTotalFragmentFragment = { __typename?: 'TimelineCalendarEventsWithTotal', totalNumberOfCalendarEvents: number, timelineCalendarEvents: Array<{ __typename?: 'TimelineCalendarEvent', id: any, title: string, description: string, location: string, startsAt: string, endsAt: string, isFullDay: boolean, visibility: CalendarChannelVisibility, participants: Array<{ __typename?: 'TimelineCalendarEventParticipant', personId?: any | null, workspaceMemberId?: any | null, firstName: string, lastName: string, displayName: string, avatarUrl: string, handle: string }> }> }; export type GetTimelineCalendarEventsFromCompanyIdQueryVariables = Exact<{ companyId: Scalars['UUID']; @@ -1006,7 +1026,7 @@ export type GetTimelineCalendarEventsFromCompanyIdQueryVariables = Exact<{ }>; -export type GetTimelineCalendarEventsFromCompanyIdQuery = { __typename?: 'Query', getTimelineCalendarEventsFromCompanyId: { __typename?: 'TimelineCalendarEventsWithTotal', totalNumberOfCalendarEvents: number, timelineCalendarEvents: Array<{ __typename?: 'TimelineCalendarEvent', id: any, title: string, description: string, location: string, startsAt: string, endsAt: string, isFullDay: boolean, visibility: TimelineCalendarEventVisibility, participants: Array<{ __typename?: 'TimelineCalendarEventParticipant', personId?: any | null, workspaceMemberId?: any | null, firstName: string, lastName: string, displayName: string, avatarUrl: string, handle: string }> }> } }; +export type GetTimelineCalendarEventsFromCompanyIdQuery = { __typename?: 'Query', getTimelineCalendarEventsFromCompanyId: { __typename?: 'TimelineCalendarEventsWithTotal', totalNumberOfCalendarEvents: number, timelineCalendarEvents: Array<{ __typename?: 'TimelineCalendarEvent', id: any, title: string, description: string, location: string, startsAt: string, endsAt: string, isFullDay: boolean, visibility: CalendarChannelVisibility, participants: Array<{ __typename?: 'TimelineCalendarEventParticipant', personId?: any | null, workspaceMemberId?: any | null, firstName: string, lastName: string, displayName: string, avatarUrl: string, handle: string }> }> } }; export type GetTimelineCalendarEventsFromPersonIdQueryVariables = Exact<{ personId: Scalars['UUID']; @@ -1015,13 +1035,13 @@ export type GetTimelineCalendarEventsFromPersonIdQueryVariables = Exact<{ }>; -export type GetTimelineCalendarEventsFromPersonIdQuery = { __typename?: 'Query', getTimelineCalendarEventsFromPersonId: { __typename?: 'TimelineCalendarEventsWithTotal', totalNumberOfCalendarEvents: number, timelineCalendarEvents: Array<{ __typename?: 'TimelineCalendarEvent', id: any, title: string, description: string, location: string, startsAt: string, endsAt: string, isFullDay: boolean, visibility: TimelineCalendarEventVisibility, participants: Array<{ __typename?: 'TimelineCalendarEventParticipant', personId?: any | null, workspaceMemberId?: any | null, firstName: string, lastName: string, displayName: string, avatarUrl: string, handle: string }> }> } }; +export type GetTimelineCalendarEventsFromPersonIdQuery = { __typename?: 'Query', getTimelineCalendarEventsFromPersonId: { __typename?: 'TimelineCalendarEventsWithTotal', totalNumberOfCalendarEvents: number, timelineCalendarEvents: Array<{ __typename?: 'TimelineCalendarEvent', id: any, title: string, description: string, location: string, startsAt: string, endsAt: string, isFullDay: boolean, visibility: CalendarChannelVisibility, participants: Array<{ __typename?: 'TimelineCalendarEventParticipant', personId?: any | null, workspaceMemberId?: any | null, firstName: string, lastName: string, displayName: string, avatarUrl: string, handle: string }> }> } }; export type ParticipantFragmentFragment = { __typename?: 'TimelineThreadParticipant', personId?: any | null, workspaceMemberId?: any | null, firstName: string, lastName: string, displayName: string, avatarUrl: string, handle: string }; -export type TimelineThreadFragmentFragment = { __typename?: 'TimelineThread', id: any, read: boolean, visibility: string, lastMessageReceivedAt: string, lastMessageBody: string, subject: string, numberOfMessagesInThread: number, participantCount: number, firstParticipant: { __typename?: 'TimelineThreadParticipant', personId?: any | null, workspaceMemberId?: any | null, firstName: string, lastName: string, displayName: string, avatarUrl: string, handle: string }, lastTwoParticipants: Array<{ __typename?: 'TimelineThreadParticipant', personId?: any | null, workspaceMemberId?: any | null, firstName: string, lastName: string, displayName: string, avatarUrl: string, handle: string }> }; +export type TimelineThreadFragmentFragment = { __typename?: 'TimelineThread', id: any, read: boolean, visibility: MessageChannelVisibility, lastMessageReceivedAt: string, lastMessageBody: string, subject: string, numberOfMessagesInThread: number, participantCount: number, firstParticipant: { __typename?: 'TimelineThreadParticipant', personId?: any | null, workspaceMemberId?: any | null, firstName: string, lastName: string, displayName: string, avatarUrl: string, handle: string }, lastTwoParticipants: Array<{ __typename?: 'TimelineThreadParticipant', personId?: any | null, workspaceMemberId?: any | null, firstName: string, lastName: string, displayName: string, avatarUrl: string, handle: string }> }; -export type TimelineThreadsWithTotalFragmentFragment = { __typename?: 'TimelineThreadsWithTotal', totalNumberOfThreads: number, timelineThreads: Array<{ __typename?: 'TimelineThread', id: any, read: boolean, visibility: string, lastMessageReceivedAt: string, lastMessageBody: string, subject: string, numberOfMessagesInThread: number, participantCount: number, firstParticipant: { __typename?: 'TimelineThreadParticipant', personId?: any | null, workspaceMemberId?: any | null, firstName: string, lastName: string, displayName: string, avatarUrl: string, handle: string }, lastTwoParticipants: Array<{ __typename?: 'TimelineThreadParticipant', personId?: any | null, workspaceMemberId?: any | null, firstName: string, lastName: string, displayName: string, avatarUrl: string, handle: string }> }> }; +export type TimelineThreadsWithTotalFragmentFragment = { __typename?: 'TimelineThreadsWithTotal', totalNumberOfThreads: number, timelineThreads: Array<{ __typename?: 'TimelineThread', id: any, read: boolean, visibility: MessageChannelVisibility, lastMessageReceivedAt: string, lastMessageBody: string, subject: string, numberOfMessagesInThread: number, participantCount: number, firstParticipant: { __typename?: 'TimelineThreadParticipant', personId?: any | null, workspaceMemberId?: any | null, firstName: string, lastName: string, displayName: string, avatarUrl: string, handle: string }, lastTwoParticipants: Array<{ __typename?: 'TimelineThreadParticipant', personId?: any | null, workspaceMemberId?: any | null, firstName: string, lastName: string, displayName: string, avatarUrl: string, handle: string }> }> }; export type GetTimelineThreadsFromCompanyIdQueryVariables = Exact<{ companyId: Scalars['UUID']; @@ -1030,7 +1050,7 @@ export type GetTimelineThreadsFromCompanyIdQueryVariables = Exact<{ }>; -export type GetTimelineThreadsFromCompanyIdQuery = { __typename?: 'Query', getTimelineThreadsFromCompanyId: { __typename?: 'TimelineThreadsWithTotal', totalNumberOfThreads: number, timelineThreads: Array<{ __typename?: 'TimelineThread', id: any, read: boolean, visibility: string, lastMessageReceivedAt: string, lastMessageBody: string, subject: string, numberOfMessagesInThread: number, participantCount: number, firstParticipant: { __typename?: 'TimelineThreadParticipant', personId?: any | null, workspaceMemberId?: any | null, firstName: string, lastName: string, displayName: string, avatarUrl: string, handle: string }, lastTwoParticipants: Array<{ __typename?: 'TimelineThreadParticipant', personId?: any | null, workspaceMemberId?: any | null, firstName: string, lastName: string, displayName: string, avatarUrl: string, handle: string }> }> } }; +export type GetTimelineThreadsFromCompanyIdQuery = { __typename?: 'Query', getTimelineThreadsFromCompanyId: { __typename?: 'TimelineThreadsWithTotal', totalNumberOfThreads: number, timelineThreads: Array<{ __typename?: 'TimelineThread', id: any, read: boolean, visibility: MessageChannelVisibility, lastMessageReceivedAt: string, lastMessageBody: string, subject: string, numberOfMessagesInThread: number, participantCount: number, firstParticipant: { __typename?: 'TimelineThreadParticipant', personId?: any | null, workspaceMemberId?: any | null, firstName: string, lastName: string, displayName: string, avatarUrl: string, handle: string }, lastTwoParticipants: Array<{ __typename?: 'TimelineThreadParticipant', personId?: any | null, workspaceMemberId?: any | null, firstName: string, lastName: string, displayName: string, avatarUrl: string, handle: string }> }> } }; export type GetTimelineThreadsFromPersonIdQueryVariables = Exact<{ personId: Scalars['UUID']; @@ -1039,7 +1059,7 @@ export type GetTimelineThreadsFromPersonIdQueryVariables = Exact<{ }>; -export type GetTimelineThreadsFromPersonIdQuery = { __typename?: 'Query', getTimelineThreadsFromPersonId: { __typename?: 'TimelineThreadsWithTotal', totalNumberOfThreads: number, timelineThreads: Array<{ __typename?: 'TimelineThread', id: any, read: boolean, visibility: string, lastMessageReceivedAt: string, lastMessageBody: string, subject: string, numberOfMessagesInThread: number, participantCount: number, firstParticipant: { __typename?: 'TimelineThreadParticipant', personId?: any | null, workspaceMemberId?: any | null, firstName: string, lastName: string, displayName: string, avatarUrl: string, handle: string }, lastTwoParticipants: Array<{ __typename?: 'TimelineThreadParticipant', personId?: any | null, workspaceMemberId?: any | null, firstName: string, lastName: string, displayName: string, avatarUrl: string, handle: string }> }> } }; +export type GetTimelineThreadsFromPersonIdQuery = { __typename?: 'Query', getTimelineThreadsFromPersonId: { __typename?: 'TimelineThreadsWithTotal', totalNumberOfThreads: number, timelineThreads: Array<{ __typename?: 'TimelineThread', id: any, read: boolean, visibility: MessageChannelVisibility, lastMessageReceivedAt: string, lastMessageBody: string, subject: string, numberOfMessagesInThread: number, participantCount: number, firstParticipant: { __typename?: 'TimelineThreadParticipant', personId?: any | null, workspaceMemberId?: any | null, firstName: string, lastName: string, displayName: string, avatarUrl: string, handle: string }, lastTwoParticipants: Array<{ __typename?: 'TimelineThreadParticipant', personId?: any | null, workspaceMemberId?: any | null, firstName: string, lastName: string, displayName: string, avatarUrl: string, handle: string }> }> } }; export type TimelineThreadFragment = { __typename?: 'TimelineThread', id: any, subject: string, lastMessageReceivedAt: string }; @@ -1121,7 +1141,7 @@ export type ImpersonateMutationVariables = Exact<{ }>; -export type ImpersonateMutation = { __typename?: 'Mutation', impersonate: { __typename?: 'Verify', user: { __typename?: 'User', id: any, firstName: string, lastName: string, email: string, canImpersonate: boolean, supportUserHash?: string | null, workspaceMember?: { __typename?: 'WorkspaceMember', id: any, colorScheme: string, avatarUrl?: string | null, locale: string, name: { __typename?: 'FullName', firstName: string, lastName: string } } | null, defaultWorkspace: { __typename?: 'Workspace', id: any, displayName?: string | null, logo?: string | null, domainName?: string | null, inviteHash?: string | null, allowImpersonation: boolean, subscriptionStatus: string, activationStatus: string, currentCacheVersion?: string | null, featureFlags?: Array<{ __typename?: 'FeatureFlag', id: any, key: string, value: boolean, workspaceId: string }> | null, currentBillingSubscription?: { __typename?: 'BillingSubscription', id: any, status: string, interval?: string | null } | null }, workspaces: Array<{ __typename?: 'UserWorkspace', workspace?: { __typename?: 'Workspace', id: any, logo?: string | null, displayName?: string | null, domainName?: string | null } | null }> }, tokens: { __typename?: 'AuthTokenPair', accessToken: { __typename?: 'AuthToken', token: string, expiresAt: string }, refreshToken: { __typename?: 'AuthToken', token: string, expiresAt: string } } } }; +export type ImpersonateMutation = { __typename?: 'Mutation', impersonate: { __typename?: 'Verify', user: { __typename?: 'User', id: any, firstName: string, lastName: string, email: string, canImpersonate: boolean, supportUserHash?: string | null, state: { __typename?: 'UserState', skipSyncEmailOnboardingStep?: boolean | null }, workspaceMember?: { __typename?: 'WorkspaceMember', id: any, colorScheme: string, avatarUrl?: string | null, locale: string, name: { __typename?: 'FullName', firstName: string, lastName: string } } | null, defaultWorkspace: { __typename?: 'Workspace', id: any, displayName?: string | null, logo?: string | null, domainName?: string | null, inviteHash?: string | null, allowImpersonation: boolean, subscriptionStatus: string, activationStatus: string, currentCacheVersion?: string | null, featureFlags?: Array<{ __typename?: 'FeatureFlag', id: any, key: string, value: boolean, workspaceId: string }> | null, currentBillingSubscription?: { __typename?: 'BillingSubscription', id: any, status: string, interval?: string | null } | null }, workspaces: Array<{ __typename?: 'UserWorkspace', workspace?: { __typename?: 'Workspace', id: any, logo?: string | null, displayName?: string | null, domainName?: string | null } | null }> }, tokens: { __typename?: 'AuthTokenPair', accessToken: { __typename?: 'AuthToken', token: string, expiresAt: string }, refreshToken: { __typename?: 'AuthToken', token: string, expiresAt: string } } } }; export type RenewTokenMutationVariables = Exact<{ appToken: Scalars['String']; @@ -1153,7 +1173,7 @@ export type VerifyMutationVariables = Exact<{ }>; -export type VerifyMutation = { __typename?: 'Mutation', verify: { __typename?: 'Verify', user: { __typename?: 'User', id: any, firstName: string, lastName: string, email: string, canImpersonate: boolean, supportUserHash?: string | null, workspaceMember?: { __typename?: 'WorkspaceMember', id: any, colorScheme: string, avatarUrl?: string | null, locale: string, name: { __typename?: 'FullName', firstName: string, lastName: string } } | null, defaultWorkspace: { __typename?: 'Workspace', id: any, displayName?: string | null, logo?: string | null, domainName?: string | null, inviteHash?: string | null, allowImpersonation: boolean, subscriptionStatus: string, activationStatus: string, currentCacheVersion?: string | null, featureFlags?: Array<{ __typename?: 'FeatureFlag', id: any, key: string, value: boolean, workspaceId: string }> | null, currentBillingSubscription?: { __typename?: 'BillingSubscription', id: any, status: string, interval?: string | null } | null }, workspaces: Array<{ __typename?: 'UserWorkspace', workspace?: { __typename?: 'Workspace', id: any, logo?: string | null, displayName?: string | null, domainName?: string | null } | null }> }, tokens: { __typename?: 'AuthTokenPair', accessToken: { __typename?: 'AuthToken', token: string, expiresAt: string }, refreshToken: { __typename?: 'AuthToken', token: string, expiresAt: string } } } }; +export type VerifyMutation = { __typename?: 'Mutation', verify: { __typename?: 'Verify', user: { __typename?: 'User', id: any, firstName: string, lastName: string, email: string, canImpersonate: boolean, supportUserHash?: string | null, state: { __typename?: 'UserState', skipSyncEmailOnboardingStep?: boolean | null }, workspaceMember?: { __typename?: 'WorkspaceMember', id: any, colorScheme: string, avatarUrl?: string | null, locale: string, name: { __typename?: 'FullName', firstName: string, lastName: string } } | null, defaultWorkspace: { __typename?: 'Workspace', id: any, displayName?: string | null, logo?: string | null, domainName?: string | null, inviteHash?: string | null, allowImpersonation: boolean, subscriptionStatus: string, activationStatus: string, currentCacheVersion?: string | null, featureFlags?: Array<{ __typename?: 'FeatureFlag', id: any, key: string, value: boolean, workspaceId: string }> | null, currentBillingSubscription?: { __typename?: 'BillingSubscription', id: any, status: string, interval?: string | null } | null }, workspaces: Array<{ __typename?: 'UserWorkspace', workspace?: { __typename?: 'Workspace', id: any, logo?: string | null, displayName?: string | null, domainName?: string | null } | null }> }, tokens: { __typename?: 'AuthTokenPair', accessToken: { __typename?: 'AuthToken', token: string, expiresAt: string }, refreshToken: { __typename?: 'AuthToken', token: string, expiresAt: string } } } }; export type CheckUserExistsQueryVariables = Exact<{ email: Scalars['String']; @@ -1202,7 +1222,12 @@ export type GetClientConfigQueryVariables = Exact<{ [key: string]: never; }>; export type GetClientConfigQuery = { __typename?: 'Query', clientConfig: { __typename?: 'ClientConfig', signInPrefilled: boolean, signUpDisabled: boolean, debugMode: boolean, chromeExtensionId?: string | null, authProviders: { __typename?: 'AuthProviders', google: boolean, password: boolean, microsoft: boolean }, billing: { __typename?: 'Billing', isBillingEnabled: boolean, billingUrl?: string | null, billingFreeTrialDurationInDays?: number | null }, telemetry: { __typename?: 'Telemetry', enabled: boolean, anonymizationEnabled: boolean }, support: { __typename?: 'Support', supportDriver: string, supportFrontChatId?: string | null }, sentry: { __typename?: 'Sentry', dsn?: string | null, environment?: string | null, release?: string | null }, captcha: { __typename?: 'Captcha', provider?: CaptchaDriverType | null, siteKey?: string | null } } }; -export type UserQueryFragmentFragment = { __typename?: 'User', id: any, firstName: string, lastName: string, email: string, canImpersonate: boolean, supportUserHash?: string | null, workspaceMember?: { __typename?: 'WorkspaceMember', id: any, colorScheme: string, avatarUrl?: string | null, locale: string, name: { __typename?: 'FullName', firstName: string, lastName: string } } | null, defaultWorkspace: { __typename?: 'Workspace', id: any, displayName?: string | null, logo?: string | null, domainName?: string | null, inviteHash?: string | null, allowImpersonation: boolean, subscriptionStatus: string, activationStatus: string, currentCacheVersion?: string | null, featureFlags?: Array<{ __typename?: 'FeatureFlag', id: any, key: string, value: boolean, workspaceId: string }> | null, currentBillingSubscription?: { __typename?: 'BillingSubscription', id: any, status: string, interval?: string | null } | null }, workspaces: Array<{ __typename?: 'UserWorkspace', workspace?: { __typename?: 'Workspace', id: any, logo?: string | null, displayName?: string | null, domainName?: string | null } | null }> }; +export type SkipSyncEmailOnboardingStepMutationVariables = Exact<{ [key: string]: never; }>; + + +export type SkipSyncEmailOnboardingStepMutation = { __typename?: 'Mutation', skipSyncEmailOnboardingStep: { __typename?: 'SkipSyncEmailOnboardingStep', success: boolean } }; + +export type UserQueryFragmentFragment = { __typename?: 'User', id: any, firstName: string, lastName: string, email: string, canImpersonate: boolean, supportUserHash?: string | null, state: { __typename?: 'UserState', skipSyncEmailOnboardingStep?: boolean | null }, workspaceMember?: { __typename?: 'WorkspaceMember', id: any, colorScheme: string, avatarUrl?: string | null, locale: string, name: { __typename?: 'FullName', firstName: string, lastName: string } } | null, defaultWorkspace: { __typename?: 'Workspace', id: any, displayName?: string | null, logo?: string | null, domainName?: string | null, inviteHash?: string | null, allowImpersonation: boolean, subscriptionStatus: string, activationStatus: string, currentCacheVersion?: string | null, featureFlags?: Array<{ __typename?: 'FeatureFlag', id: any, key: string, value: boolean, workspaceId: string }> | null, currentBillingSubscription?: { __typename?: 'BillingSubscription', id: any, status: string, interval?: string | null } | null }, workspaces: Array<{ __typename?: 'UserWorkspace', workspace?: { __typename?: 'Workspace', id: any, logo?: string | null, displayName?: string | null, domainName?: string | null } | null }> }; export type DeleteUserAccountMutationVariables = Exact<{ [key: string]: never; }>; @@ -1219,7 +1244,7 @@ export type UploadProfilePictureMutation = { __typename?: 'Mutation', uploadProf export type GetCurrentUserQueryVariables = Exact<{ [key: string]: never; }>; -export type GetCurrentUserQuery = { __typename?: 'Query', currentUser: { __typename?: 'User', id: any, firstName: string, lastName: string, email: string, canImpersonate: boolean, supportUserHash?: string | null, workspaceMember?: { __typename?: 'WorkspaceMember', id: any, colorScheme: string, avatarUrl?: string | null, locale: string, name: { __typename?: 'FullName', firstName: string, lastName: string } } | null, defaultWorkspace: { __typename?: 'Workspace', id: any, displayName?: string | null, logo?: string | null, domainName?: string | null, inviteHash?: string | null, allowImpersonation: boolean, subscriptionStatus: string, activationStatus: string, currentCacheVersion?: string | null, featureFlags?: Array<{ __typename?: 'FeatureFlag', id: any, key: string, value: boolean, workspaceId: string }> | null, currentBillingSubscription?: { __typename?: 'BillingSubscription', id: any, status: string, interval?: string | null } | null }, workspaces: Array<{ __typename?: 'UserWorkspace', workspace?: { __typename?: 'Workspace', id: any, displayName?: string | null, logo?: string | null, domainName?: string | null } | null }> } }; +export type GetCurrentUserQuery = { __typename?: 'Query', currentUser: { __typename?: 'User', id: any, firstName: string, lastName: string, email: string, canImpersonate: boolean, supportUserHash?: string | null, state: { __typename?: 'UserState', skipSyncEmailOnboardingStep?: boolean | null }, workspaceMember?: { __typename?: 'WorkspaceMember', id: any, colorScheme: string, avatarUrl?: string | null, locale: string, name: { __typename?: 'FullName', firstName: string, lastName: string } } | null, defaultWorkspace: { __typename?: 'Workspace', id: any, displayName?: string | null, logo?: string | null, domainName?: string | null, inviteHash?: string | null, allowImpersonation: boolean, subscriptionStatus: string, activationStatus: string, currentCacheVersion?: string | null, featureFlags?: Array<{ __typename?: 'FeatureFlag', id: any, key: string, value: boolean, workspaceId: string }> | null, currentBillingSubscription?: { __typename?: 'BillingSubscription', id: any, status: string, interval?: string | null } | null }, workspaces: Array<{ __typename?: 'UserWorkspace', workspace?: { __typename?: 'Workspace', id: any, logo?: string | null, displayName?: string | null, domainName?: string | null } | null }> } }; export type AddUserToWorkspaceMutationVariables = Exact<{ inviteHash: Scalars['String']; @@ -1370,6 +1395,9 @@ export const UserQueryFragmentFragmentDoc = gql` email canImpersonate supportUserHash + state { + skipSyncEmailOnboardingStep + } workspaceMember { id name { @@ -2359,6 +2387,38 @@ export function useGetClientConfigLazyQuery(baseOptions?: Apollo.LazyQueryHookOp export type GetClientConfigQueryHookResult = ReturnType; export type GetClientConfigLazyQueryHookResult = ReturnType; export type GetClientConfigQueryResult = Apollo.QueryResult; +export const SkipSyncEmailOnboardingStepDocument = gql` + mutation SkipSyncEmailOnboardingStep { + skipSyncEmailOnboardingStep { + success + } +} + `; +export type SkipSyncEmailOnboardingStepMutationFn = Apollo.MutationFunction; + +/** + * __useSkipSyncEmailOnboardingStepMutation__ + * + * To run a mutation, you first call `useSkipSyncEmailOnboardingStepMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useSkipSyncEmailOnboardingStepMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [skipSyncEmailOnboardingStepMutation, { data, loading, error }] = useSkipSyncEmailOnboardingStepMutation({ + * variables: { + * }, + * }); + */ +export function useSkipSyncEmailOnboardingStepMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(SkipSyncEmailOnboardingStepDocument, options); + } +export type SkipSyncEmailOnboardingStepMutationHookResult = ReturnType; +export type SkipSyncEmailOnboardingStepMutationResult = Apollo.MutationResult; +export type SkipSyncEmailOnboardingStepMutationOptions = Apollo.BaseMutationOptions; export const DeleteUserAccountDocument = gql` mutation DeleteUserAccount { deleteUser { @@ -2425,55 +2485,10 @@ export type UploadProfilePictureMutationOptions = Apollo.BaseMutationOptions { isMatchingOngoingUserCreationRoute || isMatchingLocation(AppPath.CreateWorkspace) || isMatchingLocation(AppPath.CreateProfile) || + isMatchingLocation(AppPath.SyncEmails) || isMatchingLocation(AppPath.PlanRequired) || isMatchingLocation(AppPath.PlanRequiredSuccess); @@ -71,6 +72,13 @@ export const usePageChangeEffectNavigateLocation = () => { return AppPath.CreateProfile; } + if ( + onboardingStatus === OnboardingStatus.OngoingSyncEmail && + !isMatchingLocation(AppPath.SyncEmails) + ) { + return AppPath.SyncEmails; + } + if ( onboardingStatus === OnboardingStatus.Completed && isMatchingOnboardingRoute && diff --git a/packages/twenty-front/src/modules/accounts/types/CalendarChannel.ts b/packages/twenty-front/src/modules/accounts/types/CalendarChannel.ts index 056d75dd5..08a2261a3 100644 --- a/packages/twenty-front/src/modules/accounts/types/CalendarChannel.ts +++ b/packages/twenty-front/src/modules/accounts/types/CalendarChannel.ts @@ -1,7 +1,4 @@ -export enum CalendarChannelVisibility { - Everything = 'SHARE_EVERYTHING', - Metadata = 'METADATA', -} +import { CalendarChannelVisibility } from '~/generated/graphql'; export type CalendarChannel = { id: string; diff --git a/packages/twenty-front/src/modules/accounts/types/MessageChannel.ts b/packages/twenty-front/src/modules/accounts/types/MessageChannel.ts index 9c9ef6140..b875854f1 100644 --- a/packages/twenty-front/src/modules/accounts/types/MessageChannel.ts +++ b/packages/twenty-front/src/modules/accounts/types/MessageChannel.ts @@ -1,11 +1,11 @@ -import { InboxSettingsVisibilityValue } from '@/settings/accounts/components/SettingsAccountsInboxVisibilitySettingsCard'; +import { MessageChannelVisibility } from '~/generated/graphql'; export type MessageChannel = { id: string; handle: string; isContactAutoCreationEnabled?: boolean; isSyncEnabled: boolean; - visibility: InboxSettingsVisibilityValue; + visibility: MessageChannelVisibility; syncStatus: string; __typename: 'MessageChannel'; }; diff --git a/packages/twenty-front/src/modules/activities/calendar/components/CalendarEventRow.tsx b/packages/twenty-front/src/modules/activities/calendar/components/CalendarEventRow.tsx index 78781a277..2a658225b 100644 --- a/packages/twenty-front/src/modules/activities/calendar/components/CalendarEventRow.tsx +++ b/packages/twenty-front/src/modules/activities/calendar/components/CalendarEventRow.tsx @@ -14,6 +14,7 @@ import { hasCalendarEventEnded } from '@/activities/calendar/utils/hasCalendarEv import { currentWorkspaceMemberState } from '@/auth/states/currentWorkspaceMemberState'; import { Card } from '@/ui/layout/card/components/Card'; import { CardContent } from '@/ui/layout/card/components/CardContent'; +import { CalendarChannelVisibility } from '~/generated/graphql'; import { TimelineCalendarEvent } from '~/generated-metadata/graphql'; import { getImageAbsoluteURIOrBase64 } from '~/utils/image/getImageAbsoluteURIOrBase64'; import { isDefined } from '~/utils/isDefined'; @@ -118,7 +119,8 @@ export const CalendarEventRow = ({ const isCurrentWorkspaceMemberAttending = calendarEvent.participants?.some( ({ workspaceMemberId }) => workspaceMemberId === currentWorkspaceMember?.id, ); - const showTitle = calendarEvent.visibility === 'SHARE_EVERYTHING'; + const showTitle = + calendarEvent.visibility === CalendarChannelVisibility.ShareEverything; return ( ` +const StyledCardContent = styled(CardContent)<{ + visibility: MessageChannelVisibility; +}>` align-items: center; display: flex; gap: ${({ theme }) => theme.spacing(2)}; height: ${({ theme }) => theme.spacing(12)}; padding: ${({ theme }) => theme.spacing(0, 4)}; cursor: ${({ visibility }) => - visibility === 'share_everything' ? 'pointer' : 'default'}; + visibility === MessageChannelVisibility.ShareEverything + ? 'pointer' + : 'default'}; `; const StyledHeading = styled.div<{ unread: boolean }>` @@ -78,8 +82,6 @@ const StyledReceivedAt = styled.div` padding: ${({ theme }) => theme.spacing(0, 1)}; `; -export type EmailThreadVisibility = 'metadata' | 'subject' | 'share_everything'; - type EmailThreadPreviewProps = { divider?: boolean; thread: TimelineThread; @@ -93,7 +95,7 @@ export const EmailThreadPreview = ({ const { openEmailThread } = useEmailThread(); - const visibility = thread.visibility as EmailThreadVisibility; + const visibility = thread.visibility; const senderNames = thread.firstParticipant.displayName + @@ -126,7 +128,7 @@ export const EmailThreadPreview = ({ .getValue(); const canOpen = - thread.visibility === 'share_everything' && + thread.visibility === MessageChannelVisibility.ShareEverything && (!clickJustTriggeredEmailDrawerClose || emailThreadIdWhenEmailThreadWasClosed !== thread.id); @@ -183,13 +185,15 @@ export const EmailThreadPreview = ({ - {visibility !== 'metadata' && ( + {visibility !== MessageChannelVisibility.Metadata && ( {thread.subject} )} - {visibility === 'share_everything' && ( + {visibility === MessageChannelVisibility.ShareEverything && ( {thread.lastMessageBody} )} - {visibility !== 'share_everything' && } + {visibility !== MessageChannelVisibility.ShareEverything && ( + + )} {formatToHumanReadableDate(thread.lastMessageReceivedAt)} diff --git a/packages/twenty-front/src/modules/auth/hooks/__test__/useOnboardingStatus.test.ts b/packages/twenty-front/src/modules/auth/hooks/__test__/useOnboardingStatus.test.ts index 625ff0a1d..bdeaa00b6 100644 --- a/packages/twenty-front/src/modules/auth/hooks/__test__/useOnboardingStatus.test.ts +++ b/packages/twenty-front/src/modules/auth/hooks/__test__/useOnboardingStatus.test.ts @@ -3,6 +3,7 @@ import { renderHook } from '@testing-library/react'; import { RecoilRoot, useSetRecoilState } from 'recoil'; import { useOnboardingStatus } from '@/auth/hooks/useOnboardingStatus'; +import { CurrentUser, currentUserState } from '@/auth/states/currentUserState'; import { currentWorkspaceMemberState } from '@/auth/states/currentWorkspaceMemberState'; import { CurrentWorkspace, @@ -20,6 +21,13 @@ const billing = { billingUrl: 'testing.com', isBillingEnabled: true, }; +const currentUser = { + id: '1', + email: 'test@test', + supportUserHash: '1', + canImpersonate: false, + state: { skipSyncEmailOnboardingStep: true }, +} as CurrentUser; const currentWorkspace = { activationStatus: 'active', id: '1', @@ -27,7 +35,7 @@ const currentWorkspace = { currentBillingSubscription: { status: 'trialing', }, -}; +} as CurrentWorkspace; const currentWorkspaceMember = { id: '1', locale: '', @@ -46,12 +54,14 @@ const renderHooks = () => { const setCurrentWorkspaceMember = useSetRecoilState( currentWorkspaceMemberState, ); + const setCurrentUser = useSetRecoilState(currentUserState); const setTokenPair = useSetRecoilState(tokenPairState); const setVerifyPending = useSetRecoilState(isVerifyPendingState); return { onboardingStatus, setBilling, + setCurrentUser, setCurrentWorkspace, setCurrentWorkspaceMember, setTokenPair, @@ -77,6 +87,7 @@ describe('useOnboardingStatus', () => { const { setTokenPair, setBilling, + setCurrentUser, setCurrentWorkspace, setCurrentWorkspaceMember, } = result.current; @@ -84,10 +95,11 @@ describe('useOnboardingStatus', () => { act(() => { setTokenPair(tokenPair); setBilling(billing); + setCurrentUser(currentUser); setCurrentWorkspace({ ...currentWorkspace, subscriptionStatus: 'incomplete', - } as CurrentWorkspace); + }); setCurrentWorkspaceMember(currentWorkspaceMember); }); @@ -99,6 +111,7 @@ describe('useOnboardingStatus', () => { const { setTokenPair, setBilling, + setCurrentUser, setCurrentWorkspace, setCurrentWorkspaceMember, } = result.current; @@ -106,10 +119,11 @@ describe('useOnboardingStatus', () => { act(() => { setTokenPair(tokenPair); setBilling(billing); + setCurrentUser(currentUser); setCurrentWorkspace({ ...currentWorkspace, subscriptionStatus: 'canceled', - } as CurrentWorkspace); + }); setCurrentWorkspaceMember({ ...currentWorkspaceMember, name: { @@ -124,16 +138,18 @@ describe('useOnboardingStatus', () => { it('should return "ongoing_workspace_activation"', async () => { const { result } = renderHooks(); - const { setTokenPair, setBilling, setCurrentWorkspace } = result.current; + const { setTokenPair, setBilling, setCurrentUser, setCurrentWorkspace } = + result.current; act(() => { setTokenPair(tokenPair); setBilling(billing); + setCurrentUser(currentUser); setCurrentWorkspace({ ...currentWorkspace, activationStatus: 'inactive', subscriptionStatus: 'active', - } as CurrentWorkspace); + }); }); expect(result.current.onboardingStatus).toBe( @@ -146,6 +162,7 @@ describe('useOnboardingStatus', () => { const { setTokenPair, setBilling, + setCurrentUser, setCurrentWorkspace, setCurrentWorkspaceMember, } = result.current; @@ -153,21 +170,56 @@ describe('useOnboardingStatus', () => { act(() => { setTokenPair(tokenPair); setBilling(billing); + setCurrentUser(currentUser); setCurrentWorkspace({ ...currentWorkspace, subscriptionStatus: 'active', - } as CurrentWorkspace); + }); setCurrentWorkspaceMember(currentWorkspaceMember); }); expect(result.current.onboardingStatus).toBe('ongoing_profile_creation'); }); + it('should return "ongoing_sync_email"', async () => { + const { result } = renderHooks(); + const { + setTokenPair, + setBilling, + setCurrentUser, + setCurrentWorkspace, + setCurrentWorkspaceMember, + } = result.current; + + act(() => { + setTokenPair(tokenPair); + setBilling(billing); + setCurrentUser({ + ...currentUser, + state: { skipSyncEmailOnboardingStep: false }, + }); + setCurrentWorkspace({ + ...currentWorkspace, + subscriptionStatus: 'active', + }); + setCurrentWorkspaceMember({ + ...currentWorkspaceMember, + name: { + firstName: 'John', + lastName: 'Doe', + }, + }); + }); + + expect(result.current.onboardingStatus).toBe('ongoing_sync_email'); + }); + it('should return "completed"', async () => { const { result } = renderHooks(); const { setTokenPair, setBilling, + setCurrentUser, setCurrentWorkspace, setCurrentWorkspaceMember, } = result.current; @@ -175,10 +227,11 @@ describe('useOnboardingStatus', () => { act(() => { setTokenPair(tokenPair); setBilling(billing); + setCurrentUser(currentUser); setCurrentWorkspace({ ...currentWorkspace, subscriptionStatus: 'active', - } as CurrentWorkspace); + }); setCurrentWorkspaceMember({ ...currentWorkspaceMember, name: { @@ -196,6 +249,7 @@ describe('useOnboardingStatus', () => { const { setTokenPair, setBilling, + setCurrentUser, setCurrentWorkspace, setCurrentWorkspaceMember, } = result.current; @@ -203,10 +257,11 @@ describe('useOnboardingStatus', () => { act(() => { setTokenPair(tokenPair); setBilling(billing); + setCurrentUser(currentUser); setCurrentWorkspace({ ...currentWorkspace, subscriptionStatus: 'past_due', - } as CurrentWorkspace); + }); setCurrentWorkspaceMember({ ...currentWorkspaceMember, name: { @@ -224,6 +279,7 @@ describe('useOnboardingStatus', () => { const { setTokenPair, setBilling, + setCurrentUser, setCurrentWorkspace, setCurrentWorkspaceMember, } = result.current; @@ -231,10 +287,11 @@ describe('useOnboardingStatus', () => { act(() => { setTokenPair(tokenPair); setBilling(billing); + setCurrentUser(currentUser); setCurrentWorkspace({ ...currentWorkspace, subscriptionStatus: 'unpaid', - } as CurrentWorkspace); + }); setCurrentWorkspaceMember({ ...currentWorkspaceMember, name: { @@ -252,6 +309,7 @@ describe('useOnboardingStatus', () => { const { setTokenPair, setBilling, + setCurrentUser, setCurrentWorkspace, setCurrentWorkspaceMember, } = result.current; @@ -259,6 +317,7 @@ describe('useOnboardingStatus', () => { act(() => { setTokenPair(tokenPair); setBilling(billing); + setCurrentUser(currentUser); setCurrentWorkspace({ ...currentWorkspace, subscriptionStatus: 'trialing', diff --git a/packages/twenty-front/src/modules/auth/hooks/useOnboardingStatus.ts b/packages/twenty-front/src/modules/auth/hooks/useOnboardingStatus.ts index 63c5d7add..b638b19da 100644 --- a/packages/twenty-front/src/modules/auth/hooks/useOnboardingStatus.ts +++ b/packages/twenty-front/src/modules/auth/hooks/useOnboardingStatus.ts @@ -1,5 +1,6 @@ import { useRecoilValue } from 'recoil'; +import { currentUserState } from '@/auth/states/currentUserState'; import { currentWorkspaceMemberState } from '@/auth/states/currentWorkspaceMemberState'; import { currentWorkspaceState } from '@/auth/states/currentWorkspaceState'; import { billingState } from '@/client-config/states/billingState'; @@ -14,12 +15,14 @@ export const useOnboardingStatus = (): OnboardingStatus | undefined => { const billing = useRecoilValue(billingState); const currentWorkspaceMember = useRecoilValue(currentWorkspaceMemberState); const currentWorkspace = useRecoilValue(currentWorkspaceState); + const currentUser = useRecoilValue(currentUserState); const isLoggedIn = useIsLogged(); return getOnboardingStatus({ isLoggedIn, currentWorkspaceMember, currentWorkspace, + currentUser, isBillingEnabled: billing?.isBillingEnabled || false, }); }; diff --git a/packages/twenty-front/src/modules/auth/states/currentUserState.ts b/packages/twenty-front/src/modules/auth/states/currentUserState.ts index 4f1b3130e..f83c6243f 100644 --- a/packages/twenty-front/src/modules/auth/states/currentUserState.ts +++ b/packages/twenty-front/src/modules/auth/states/currentUserState.ts @@ -4,7 +4,7 @@ import { User } from '~/generated/graphql'; export type CurrentUser = Pick< User, - 'id' | 'email' | 'supportUserHash' | 'canImpersonate' + 'id' | 'email' | 'supportUserHash' | 'canImpersonate' | 'state' >; export const currentUserState = createState({ diff --git a/packages/twenty-front/src/modules/auth/utils/__test__/getOnboardingStatus.test.ts b/packages/twenty-front/src/modules/auth/utils/__test__/getOnboardingStatus.test.ts index 1ac681ac3..9087b8d1f 100644 --- a/packages/twenty-front/src/modules/auth/utils/__test__/getOnboardingStatus.test.ts +++ b/packages/twenty-front/src/modules/auth/utils/__test__/getOnboardingStatus.test.ts @@ -1,3 +1,4 @@ +import { CurrentUser } from '@/auth/states/currentUserState'; import { CurrentWorkspace } from '@/auth/states/currentWorkspaceState'; import { WorkspaceMember } from '@/workspace-member/types/WorkspaceMember'; @@ -9,6 +10,7 @@ describe('getOnboardingStatus', () => { isLoggedIn: false, currentWorkspaceMember: null, currentWorkspace: null, + currentUser: null, isBillingEnabled: false, }); @@ -19,6 +21,9 @@ describe('getOnboardingStatus', () => { id: '1', activationStatus: 'inactive', } as CurrentWorkspace, + currentUser: { + state: { skipSyncEmailOnboardingStep: true }, + } as CurrentUser, isBillingEnabled: false, }); @@ -32,6 +37,28 @@ describe('getOnboardingStatus', () => { id: '1', activationStatus: 'active', } as CurrentWorkspace, + currentUser: { + state: { skipSyncEmailOnboardingStep: true }, + } as CurrentUser, + isBillingEnabled: false, + }); + + const ongoingSyncEmail = getOnboardingStatus({ + isLoggedIn: true, + currentWorkspaceMember: { + id: '1', + name: { + firstName: 'John', + lastName: 'Doe', + }, + } as WorkspaceMember, + currentWorkspace: { + id: '1', + activationStatus: 'active', + } as CurrentWorkspace, + currentUser: { + state: { skipSyncEmailOnboardingStep: false }, + } as CurrentUser, isBillingEnabled: false, }); @@ -48,6 +75,9 @@ describe('getOnboardingStatus', () => { id: '1', activationStatus: 'active', } as CurrentWorkspace, + currentUser: { + state: { skipSyncEmailOnboardingStep: true }, + } as CurrentUser, isBillingEnabled: false, }); @@ -65,6 +95,9 @@ describe('getOnboardingStatus', () => { activationStatus: 'active', subscriptionStatus: 'incomplete', } as CurrentWorkspace, + currentUser: { + state: { skipSyncEmailOnboardingStep: true }, + } as CurrentUser, isBillingEnabled: true, }); @@ -82,6 +115,9 @@ describe('getOnboardingStatus', () => { activationStatus: 'active', subscriptionStatus: 'incomplete', } as CurrentWorkspace, + currentUser: { + state: { skipSyncEmailOnboardingStep: true }, + } as CurrentUser, isBillingEnabled: false, }); @@ -99,12 +135,16 @@ describe('getOnboardingStatus', () => { activationStatus: 'active', subscriptionStatus: 'canceled', } as CurrentWorkspace, + currentUser: { + state: { skipSyncEmailOnboardingStep: true }, + } as CurrentUser, isBillingEnabled: true, }); expect(ongoingUserCreation).toBe('ongoing_user_creation'); expect(ongoingWorkspaceActivation).toBe('ongoing_workspace_activation'); expect(ongoingProfileCreation).toBe('ongoing_profile_creation'); + expect(ongoingSyncEmail).toBe('ongoing_sync_email'); expect(completed).toBe('completed'); expect(incomplete).toBe('incomplete'); expect(canceled).toBe('canceled'); diff --git a/packages/twenty-front/src/modules/auth/utils/getOnboardingStatus.ts b/packages/twenty-front/src/modules/auth/utils/getOnboardingStatus.ts index 82b05648a..0577943fd 100644 --- a/packages/twenty-front/src/modules/auth/utils/getOnboardingStatus.ts +++ b/packages/twenty-front/src/modules/auth/utils/getOnboardingStatus.ts @@ -1,3 +1,4 @@ +import { CurrentUser } from '@/auth/states/currentUserState'; import { CurrentWorkspace } from '@/auth/states/currentWorkspaceState'; import { WorkspaceMember } from '@/workspace-member/types/WorkspaceMember'; @@ -9,6 +10,7 @@ export enum OnboardingStatus { OngoingUserCreation = 'ongoing_user_creation', OngoingWorkspaceActivation = 'ongoing_workspace_activation', OngoingProfileCreation = 'ongoing_profile_creation', + OngoingSyncEmail = 'ongoing_sync_email', Completed = 'completed', CompletedWithoutSubscription = 'completed_without_subscription', } @@ -17,6 +19,7 @@ export const getOnboardingStatus = ({ isLoggedIn, currentWorkspaceMember, currentWorkspace, + currentUser, isBillingEnabled, }: { isLoggedIn: boolean; @@ -25,6 +28,7 @@ export const getOnboardingStatus = ({ 'createdAt' | 'updatedAt' | 'userId' | 'userEmail' | '__typename' > | null; currentWorkspace: CurrentWorkspace | null; + currentUser: CurrentUser | null; isBillingEnabled: boolean; }) => { if (!isLoggedIn) { @@ -33,7 +37,7 @@ export const getOnboardingStatus = ({ // After SignInUp, the user should have a current workspace assigned. // If not, it indicates that the data is still being requested. - if (!currentWorkspace) { + if (!currentWorkspace || !currentUser) { return undefined; } @@ -55,6 +59,10 @@ export const getOnboardingStatus = ({ return OnboardingStatus.OngoingProfileCreation; } + if (!currentUser.state.skipSyncEmailOnboardingStep) { + return OnboardingStatus.OngoingSyncEmail; + } + if (isBillingEnabled && currentWorkspace.subscriptionStatus === 'canceled') { return OnboardingStatus.Canceled; } diff --git a/packages/twenty-front/src/modules/object-metadata/utils/getObjectMetadataItemsMock.ts b/packages/twenty-front/src/modules/object-metadata/utils/getObjectMetadataItemsMock.ts index 3edc7af06..dc07a0932 100644 --- a/packages/twenty-front/src/modules/object-metadata/utils/getObjectMetadataItemsMock.ts +++ b/packages/twenty-front/src/modules/object-metadata/utils/getObjectMetadataItemsMock.ts @@ -292,6 +292,66 @@ export const getObjectMetadataItemsMock = () => { updatedAt: '2023-11-30T11:13:15.206Z', fields: [], }, + { + __typename: 'object', + id: '3aac4582-f677-4d7d-acd5-3e33a039acdd', + dataSourceId: '20202020-7f63-47a9-b1b3-6c7290ca9fb1', + nameSingular: 'connectedAccount', + namePlural: 'connectedAccounts', + labelSingular: 'Connected Account', + labelPlural: 'Connected Accounts', + description: 'A connected account', + icon: 'IconAt', + isCustom: false, + isRemote: false, + isActive: true, + isSystem: true, + createdAt: '2024-06-01T14:55:04.039Z', + updatedAt: '2024-06-01T14:55:04.039Z', + labelIdentifierFieldMetadataId: null, + imageIdentifierFieldMetadataId: null, + fields: [], + }, + { + __typename: 'object', + id: '3aac4582-f677-4d7d-acd5-3e33a039acde', + dataSourceId: '20202020-7f63-47a9-b1b3-6c7290ca9fb1', + nameSingular: 'messageChannel', + namePlural: 'messageChannels', + labelSingular: 'Message Channel', + labelPlural: 'Message Channels', + description: 'A message channel', + icon: 'IconAt', + isCustom: false, + isRemote: false, + isActive: true, + isSystem: true, + createdAt: '2024-06-01T14:55:04.039Z', + updatedAt: '2024-06-01T14:55:04.039Z', + labelIdentifierFieldMetadataId: null, + imageIdentifierFieldMetadataId: null, + fields: [], + }, + { + __typename: 'object', + id: '3aac4582-f677-4d7d-acd5-3e33a039acdf', + dataSourceId: '20202020-7f63-47a9-b1b3-6c7290ca9fb1', + nameSingular: 'calendarChannel', + namePlural: 'calendarChannels', + labelSingular: 'Calendar Channel', + labelPlural: 'Calendar Channels', + description: 'A calendar channel', + icon: 'IconAt', + isCustom: false, + isRemote: false, + isActive: true, + isSystem: true, + createdAt: '2024-06-01T14:55:04.039Z', + updatedAt: '2024-06-01T14:55:04.039Z', + labelIdentifierFieldMetadataId: null, + imageIdentifierFieldMetadataId: null, + fields: [], + }, { __typename: 'object', id: '20202020-cae9-4ff4-9579-f7d9fe44c937', diff --git a/packages/twenty-front/src/modules/onboarding/components/OnboardingSyncEmailsSettingsCard.tsx b/packages/twenty-front/src/modules/onboarding/components/OnboardingSyncEmailsSettingsCard.tsx new file mode 100644 index 000000000..61605ec00 --- /dev/null +++ b/packages/twenty-front/src/modules/onboarding/components/OnboardingSyncEmailsSettingsCard.tsx @@ -0,0 +1,19 @@ +import { onboardingSyncEmailsOptions } from '@/onboarding/components/onboardingSyncEmailsOptions'; +import { SettingsAccountsRadioSettingsCard } from '@/settings/accounts/components/SettingsAccountsRadioSettingsCard'; +import { MessageChannelVisibility } from '~/generated/graphql'; + +type OnboardingSyncEmailsSettingsCardProps = { + onChange: (nextValue: MessageChannelVisibility) => void; + value?: MessageChannelVisibility; +}; + +export const OnboardingSyncEmailsSettingsCard = ({ + onChange, + value = MessageChannelVisibility.ShareEverything, +}: OnboardingSyncEmailsSettingsCardProps) => ( + +); diff --git a/packages/twenty-front/src/modules/onboarding/components/onboardingSyncEmailsOptions.tsx b/packages/twenty-front/src/modules/onboarding/components/onboardingSyncEmailsOptions.tsx new file mode 100644 index 000000000..71e53d472 --- /dev/null +++ b/packages/twenty-front/src/modules/onboarding/components/onboardingSyncEmailsOptions.tsx @@ -0,0 +1,38 @@ +import styled from '@emotion/styled'; + +import { SettingsAccountsVisibilitySettingCardMedia } from '@/settings/accounts/components/SettingsAccountsVisibilitySettingCardMedia'; +import { MessageChannelVisibility } from '~/generated/graphql'; + +const StyledCardMedia = styled(SettingsAccountsVisibilitySettingCardMedia)` + width: ${({ theme }) => theme.spacing(10)}; +`; + +export const onboardingSyncEmailsOptions = [ + { + title: 'Everything', + description: + 'Your emails and events content will be shared with your team.', + value: MessageChannelVisibility.ShareEverything, + cardMedia: ( + + ), + }, + { + title: 'Subject and metadata', + description: + 'Your email subjects and meeting titles will be shared with your team.', + value: MessageChannelVisibility.Subject, + cardMedia: ( + + ), + }, + { + title: 'Metadata', + description: + 'Only the timestamp & participants will be shared with your team.', + value: MessageChannelVisibility.Metadata, + cardMedia: ( + + ), + }, +]; diff --git a/packages/twenty-front/src/modules/onboarding/graphql/mutations/skipSyncEmailOnboardingStep.ts b/packages/twenty-front/src/modules/onboarding/graphql/mutations/skipSyncEmailOnboardingStep.ts new file mode 100644 index 000000000..1e6f29504 --- /dev/null +++ b/packages/twenty-front/src/modules/onboarding/graphql/mutations/skipSyncEmailOnboardingStep.ts @@ -0,0 +1,9 @@ +import { gql } from '@apollo/client'; + +export const SKIP_SYNC_EMAIL_ONBOARDING_STEP = gql` + mutation SkipSyncEmailOnboardingStep { + skipSyncEmailOnboardingStep { + success + } + } +`; diff --git a/packages/twenty-front/src/modules/settings/accounts/components/SettingsAccountsCalendarVisibilitySettingsCard.tsx b/packages/twenty-front/src/modules/settings/accounts/components/SettingsAccountsCalendarVisibilitySettingsCard.tsx index 1ae15b9b1..b1a26e3ca 100644 --- a/packages/twenty-front/src/modules/settings/accounts/components/SettingsAccountsCalendarVisibilitySettingsCard.tsx +++ b/packages/twenty-front/src/modules/settings/accounts/components/SettingsAccountsCalendarVisibilitySettingsCard.tsx @@ -1,8 +1,8 @@ import styled from '@emotion/styled'; -import { CalendarChannelVisibility } from '@/accounts/types/CalendarChannel'; import { SettingsAccountsRadioSettingsCard } from '@/settings/accounts/components/SettingsAccountsRadioSettingsCard'; import { SettingsAccountsVisibilitySettingCardMedia } from '@/settings/accounts/components/SettingsAccountsVisibilitySettingCardMedia'; +import { CalendarChannelVisibility } from '~/generated/graphql'; type SettingsAccountsEventVisibilitySettingsCardProps = { onChange: (nextValue: CalendarChannelVisibility) => void; @@ -17,7 +17,7 @@ const eventSettingsVisibilityOptions = [ { title: 'Everything', description: 'The whole event details will be shared with your team.', - value: CalendarChannelVisibility.Everything, + value: CalendarChannelVisibility.ShareEverything, cardMedia: , }, { @@ -30,7 +30,7 @@ const eventSettingsVisibilityOptions = [ export const SettingsAccountsEventVisibilitySettingsCard = ({ onChange, - value = CalendarChannelVisibility.Everything, + value = CalendarChannelVisibility.ShareEverything, }: SettingsAccountsEventVisibilitySettingsCardProps) => ( void; - value?: InboxSettingsVisibilityValue; + onChange: (nextValue: MessageChannelVisibility) => void; + value?: MessageChannelVisibility; }; const inboxSettingsVisibilityOptions = [ { title: 'Everything', description: 'Subject, body and attachments will be shared with your team.', - value: InboxSettingsVisibilityValue.Everything, + value: MessageChannelVisibility.ShareEverything, cardMedia: ( ( { const { triggerGoogleApisOAuth } = useTriggerGoogleApisOAuth(); + const handleOnClick = async () => { + await triggerGoogleApisOAuth(); + }; + return ( {label || 'No connected account'} @@ -35,7 +39,7 @@ export const SettingsAccountsListEmptyStateCard = ({ Icon={IconGoogle} title="Connect with Google" variant="secondary" - onClick={triggerGoogleApisOAuth} + onClick={handleOnClick} /> diff --git a/packages/twenty-front/src/modules/settings/accounts/components/SettingsAccountsRadioSettingsCard.tsx b/packages/twenty-front/src/modules/settings/accounts/components/SettingsAccountsRadioSettingsCard.tsx index 2075d6872..4592b42b4 100644 --- a/packages/twenty-front/src/modules/settings/accounts/components/SettingsAccountsRadioSettingsCard.tsx +++ b/packages/twenty-front/src/modules/settings/accounts/components/SettingsAccountsRadioSettingsCard.tsx @@ -50,7 +50,7 @@ export const SettingsAccountsRadioSettingsCard = < options, value, }: SettingsAccountsRadioSettingsCardProps