Closed mnbro closed 1 month ago
The issue appears to be related to a missing relation in the database schema. Specifically, the relation 'workspace_1tijfbhq4kpru5g3bwbr1anui.calendarEvent' does not exist. Here are the steps to resolve this:
Check Database Schema: Ensure that the calendarEvent
table exists in the specified workspace schema (workspace_1tijfbhq4kpru5g3bwbr1anui
).
Verify Entity Configuration: Confirm that the CalendarEventWorkspaceEntity
is correctly configured in /packages/twenty-server/src/modules/calendar/common/standard-objects/calendar-event.workspace-entity.ts
.
Update Schema if Necessary: If the table or relation is missing, update the database schema to include the calendarEvent
table. You may need to run migrations or manually create the table.
Check Repository Usage: Ensure that the calendarEventRepository
is correctly injected and used in /packages/twenty-server/src/engine/core-modules/calendar/timeline-calendar-event.service.ts
.
Review GraphQL Queries: Verify that the GraphQL queries in /packages/twenty-front/src/modules/activities/calendar/queries/getTimelineCalendarEventsFromPersonId.ts
and /packages/twenty-front/src/modules/activities/calendar/queries/getTimelineCalendarEventsFromCompanyId.ts
are correctly formed and match the expected schema.
By following these steps, you should be able to identify and resolve the issue with the missing timeline events.
/packages/twenty-server/src/engine/core-modules/calendar/timeline-calendar-event.resolver.ts /packages/twenty-server/src/engine/core-modules/calendar/timeline-calendar-event.service.ts /packages/twenty-server/src/engine/core-modules/calendar/dtos/timeline-calendar-event.dto.ts /packages/twenty-server/src/engine/core-modules/calendar/dtos/timeline-calendar-event-participant.dto.ts /packages/twenty-server/src/engine/core-modules/calendar/dtos/timeline-calendar-events-with-total.dto.ts /packages/twenty-front/src/modules/activities/calendar/queries/getTimelineCalendarEventsFromPersonId.ts /packages/twenty-front/src/modules/activities/calendar/queries/getTimelineCalendarEventsFromCompanyId.ts /packages/twenty-front/src/modules/activities/calendar/queries/fragments/timelineCalendarEventParticipantFragment.ts /packages/twenty-front/src/modules/activities/calendar/queries/fragments /packages/twenty-server/src/modules/calendar/repositories/calendar-event /packages/twenty-server/src/engine/core-modules/calendar/dtos
Mmh if workspace_1tijfbhq4kpru5g3bwbr1anui.calendarEvent event doesn't exist it means migration weren't ran properly on your database. CalendarEvent are not directly related to the Timeline. The object being used for the timeline is called timelineActivity
Mmh if workspace_1tijfbhq4kpru5g3bwbr1anui.calendarEvent event doesn't exist it means migration weren't ran properly on your database. CalendarEvent are not directly related to the Timeline. The object being used for the timeline is called timelineActivity
How can I manually run the migration?
Try running yarn command:prod workspace:sync-metadata -w WORKSPACE_ID -f
with the broken workspace's id? Sorry it's not easy yet, it will be directly in-product one day
Try running
yarn command:prod workspace:sync-metadata -w WORKSPACE_ID -f
with the broken workspace's id? Sorry it's not easy yet, it will be directly in-product one day
Below is the output from command. It doesn't seem to work:
[Nest] 1304 - 07/10/2024, 9:17:24 AM WARN [SyncWorkspaceMetadataCommand] Workspace contains 3 issues, sync has been forced. query failed: SELECT "IndexMetadataEntity"."id" AS "IndexMetadataEntity_id", "IndexMetadataEntity"."name" AS "IndexMetadataEntity_name", "IndexMetadataEntity"."workspaceId" AS "IndexMetadataEntity_workspaceId", "IndexMetadataEntity"."objectMetadataId" AS "IndexMetadataEntity_objectMetadataId", "IndexMetadataEntity__IndexMetadataEntity_indexFieldMetadatas"."id" AS "IndexMetadataEntity__IndexMetadataEntity_indexFieldMetadatas_id", "IndexMetadataEntity__IndexMetadataEntity_indexFieldMetadatas"."indexMetadataId" AS "84581924c7de1f6c615eb371e16bdfb4017c1f6a", "IndexMetadataEntity__IndexMetadataEntity_indexFieldMetadatas"."fieldMetadataId" AS "7ee8fc352842480ecd5c0e029bf8f8e0f6b3e0f9", "IndexMetadataEntity__IndexMetadataEntity_indexFieldMetadatas"."order" AS "273e6dbf4dce99c899b3667616ff550fa0059f44", "ac68102b0e924698a47fd6733e04231a61f251df"."id" AS "ac68102b0e924698a47fd6733e04231a61f251df_id", "ac68102b0e924698a47fd6733e04231a61f251df"."standardId" AS "ac68102b0e924698a47fd6733e04231a61f251df_standardId", "ac68102b0e924698a47fd6733e04231a61f251df"."objectMetadataId" AS "ac68102b0e924698a47fd6733e04231a61f251df_objectMetadataId", "ac68102b0e924698a47fd6733e04231a61f251df"."type" AS "ac68102b0e924698a47fd6733e04231a61f251df_type", "ac68102b0e924698a47fd6733e04231a61f251df"."name" AS "ac68102b0e924698a47fd6733e04231a61f251df_name", "ac68102b0e924698a47fd6733e04231a61f251df"."label" AS "ac68102b0e924698a47fd6733e04231a61f251df_label", "ac68102b0e924698a47fd6733e04231a61f251df"."defaultValue" AS "ac68102b0e924698a47fd6733e04231a61f251df_defaultValue", "ac68102b0e924698a47fd6733e04231a61f251df"."description" AS "ac68102b0e924698a47fd6733e04231a61f251df_description", "ac68102b0e924698a47fd6733e04231a61f251df"."icon" AS "ac68102b0e924698a47fd6733e04231a61f251df_icon", "ac68102b0e924698a47fd6733e04231a61f251df"."options" AS "ac68102b0e924698a47fd6733e04231a61f251df_options", "ac68102b0e924698a47fd6733e04231a61f251df"."settings" AS "ac68102b0e924698a47fd6733e04231a61f251df_settings", "ac68102b0e924698a47fd6733e04231a61f251df"."isCustom" AS "ac68102b0e924698a47fd6733e04231a61f251df_isCustom", "ac68102b0e924698a47fd6733e04231a61f251df"."isActive" AS "ac68102b0e924698a47fd6733e04231a61f251df_isActive", "ac68102b0e924698a47fd6733e04231a61f251df"."isSystem" AS "ac68102b0e924698a47fd6733e04231a61f251df_isSystem", "ac68102b0e924698a47fd6733e04231a61f251df"."isNullable" AS "ac68102b0e924698a47fd6733e04231a61f251df_isNullable", "ac68102b0e924698a47fd6733e04231a61f251df"."workspaceId" AS "ac68102b0e924698a47fd6733e04231a61f251df_workspaceId", "ac68102b0e924698a47fd6733e04231a61f251df"."createdAt" AS "ac68102b0e924698a47fd6733e04231a61f251df_createdAt", "ac68102b0e924698a47fd6733e04231a61f251df"."updatedAt" AS "ac68102b0e924698a47fd6733e04231a61f251df_updatedAt" FROM "metadata"."indexMetadata" "IndexMetadataEntity" LEFT JOIN "metadata"."indexFieldMetadata" "IndexMetadataEntity__IndexMetadataEntity_indexFieldMetadatas" ON "IndexMetadataEntity__IndexMetadataEntity_indexFieldMetadatas"."indexMetadataId"="IndexMetadataEntity"."id" LEFT JOIN "metadata"."fieldMetadata" "ac68102b0e924698a47fd6733e04231a61f251df" ON "ac68102b0e924698a47fd6733e04231a61f251df"."id"="IndexMetadataEntity__IndexMetadataEntity_indexFieldMetadatas"."fieldMetadataId" WHERE (("IndexMetadataEntity"."workspaceId" = $1)) -- PARAMETERS: ["1ebd58bb-9f92-468e-b087-f769c9e5343a"] error: error: relation "metadata.indexMetadata" does not exist Sync of standard objects failed with: QueryFailedError: relation "metadata.indexMetadata" does not exist at PostgresQueryRunner.query (/app/node_modules/typeorm/driver/postgres/PostgresQueryRunner.js:219:19) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async SelectQueryBuilder.loadRawResults (/app/node_modules/typeorm/query-builder/SelectQueryBuilder.js:2192:25) at async SelectQueryBuilder.executeEntitiesAndRawResults (/app/node_modules/typeorm/query-builder/SelectQueryBuilder.js:2040:26) at async SelectQueryBuilder.getRawAndEntities (/app/node_modules/typeorm/query-builder/SelectQueryBuilder.js:684:29) at async SelectQueryBuilder.getMany (/app/node_modules/typeorm/query-builder/SelectQueryBuilder.js:750:25) at async WorkspaceSyncIndexMetadataService.synchronize (/app/packages/twenty-server/dist/src/engine/workspace-manager/workspace-sync-metadata/services/workspace-sync-index-metadata.service.js:55:49) at async WorkspaceSyncMetadataService.synchronize (/app/packages/twenty-server/dist/src/engine/workspace-manager/workspace-sync-metadata/workspace-sync-metadata.service.js:67:46) at async SyncWorkspaceMetadataCommand.run (/app/packages/twenty-server/dist/src/engine/workspace-manager/workspace-sync-metadata/commands/sync-workspace-metadata.command.js:52:54) at async Command.<anonymous> (/app/node_modules/nest-commander/src/command-runner.service.js:156:24) { query: 'SELECT "IndexMetadataEntity"."id" AS "IndexMetadataEntity_id", "IndexMetadataEntity"."name" AS "IndexMetadataEntity_name", "IndexMetadataEntity"."workspaceId" AS "IndexMetadataEntity_workspaceId", "IndexMetadataEntity"."objectMetadataId" AS "IndexMetadataEntity_objectMetadataId", "IndexMetadataEntity__IndexMetadataEntity_indexFieldMetadatas"."id" AS "IndexMetadataEntity__IndexMetadataEntity_indexFieldMetadatas_id", "IndexMetadataEntity__IndexMetadataEntity_indexFieldMetadatas"."indexMetadataId" AS "84581924c7de1f6c615eb371e16bdfb4017c1f6a", "IndexMetadataEntity__IndexMetadataEntity_indexFieldMetadatas"."fieldMetadataId" AS "7ee8fc352842480ecd5c0e029bf8f8e0f6b3e0f9", "IndexMetadataEntity__IndexMetadataEntity_indexFieldMetadatas"."order" AS "273e6dbf4dce99c899b3667616ff550fa0059f44", "ac68102b0e924698a47fd6733e04231a61f251df"."id" AS "ac68102b0e924698a47fd6733e04231a61f251df_id", "ac68102b0e924698a47fd6733e04231a61f251df"."standardId" AS "ac68102b0e924698a47fd6733e04231a61f251df_standardId", "ac68102b0e924698a47fd6733e04231a61f251df"."objectMetadataId" AS "ac68102b0e924698a47fd6733e04231a61f251df_objectMetadataId", "ac68102b0e924698a47fd6733e04231a61f251df"."type" AS "ac68102b0e924698a47fd6733e04231a61f251df_type", "ac68102b0e924698a47fd6733e04231a61f251df"."name" AS "ac68102b0e924698a47fd6733e04231a61f251df_name", "ac68102b0e924698a47fd6733e04231a61f251df"."label" AS "ac68102b0e924698a47fd6733e04231a61f251df_label", "ac68102b0e924698a47fd6733e04231a61f251df"."defaultValue" AS "ac68102b0e924698a47fd6733e04231a61f251df_defaultValue", "ac68102b0e924698a47fd6733e04231a61f251df"."description" AS "ac68102b0e924698a47fd6733e04231a61f251df_description", "ac68102b0e924698a47fd6733e04231a61f251df"."icon" AS "ac68102b0e924698a47fd6733e04231a61f251df_icon", "ac68102b0e924698a47fd6733e04231a61f251df"."options" AS "ac68102b0e924698a47fd6733e04231a61f251df_options", "ac68102b0e924698a47fd6733e04231a61f251df"."settings" AS "ac68102b0e924698a47fd6733e04231a61f251df_settings", "ac68102b0e924698a47fd6733e04231a61f251df"."isCustom" AS "ac68102b0e924698a47fd6733e04231a61f251df_isCustom", "ac68102b0e924698a47fd6733e04231a61f251df"."isActive" AS "ac68102b0e924698a47fd6733e04231a61f251df_isActive", "ac68102b0e924698a47fd6733e04231a61f251df"."isSystem" AS "ac68102b0e924698a47fd6733e04231a61f251df_isSystem", "ac68102b0e924698a47fd6733e04231a61f251df"."isNullable" AS "ac68102b0e924698a47fd6733e04231a61f251df_isNullable", "ac68102b0e924698a47fd6733e04231a61f251df"."workspaceId" AS "ac68102b0e924698a47fd6733e04231a61f251df_workspaceId", "ac68102b0e924698a47fd6733e04231a61f251df"."createdAt" AS "ac68102b0e924698a47fd6733e04231a61f251df_createdAt", "ac68102b0e924698a47fd6733e04231a61f251df"."updatedAt" AS "ac68102b0e924698a47fd6733e04231a61f251df_updatedAt" FROM "metadata"."indexMetadata" "IndexMetadataEntity" LEFT JOIN "metadata"."indexFieldMetadata" "IndexMetadataEntity__IndexMetadataEntity_indexFieldMetadatas" ON "IndexMetadataEntity__IndexMetadataEntity_indexFieldMetadatas"."indexMetadataId"="IndexMetadataEntity"."id" LEFT JOIN "metadata"."fieldMetadata" "ac68102b0e924698a47fd6733e04231a61f251df" ON "ac68102b0e924698a47fd6733e04231a61f251df"."id"="IndexMetadataEntity__IndexMetadataEntity_indexFieldMetadatas"."fieldMetadataId" WHERE (("IndexMetadataEntity"."workspaceId" = $1))', parameters: [ '1ebd58bb-9f92-468e-b087-f769c9e5343a' ], driverError: error: relation "metadata.indexMetadata" does not exist at /app/node_modules/pg/lib/client.js:526:17 at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async PostgresQueryRunner.query (/app/node_modules/typeorm/driver/postgres/PostgresQueryRunner.js:184:25) at async SelectQueryBuilder.loadRawResults (/app/node_modules/typeorm/query-builder/SelectQueryBuilder.js:2192:25) at async SelectQueryBuilder.executeEntitiesAndRawResults (/app/node_modules/typeorm/query-builder/SelectQueryBuilder.js:2040:26) at async SelectQueryBuilder.getRawAndEntities (/app/node_modules/typeorm/query-builder/SelectQueryBuilder.js:684:29) at async SelectQueryBuilder.getMany (/app/node_modules/typeorm/query-builder/SelectQueryBuilder.js:750:25) at async WorkspaceSyncIndexMetadataService.synchronize (/app/packages/twenty-server/dist/src/engine/workspace-manager/workspace-sync-metadata/services/workspace-sync-index-metadata.service.js:55:49) at async WorkspaceSyncMetadataService.synchronize (/app/packages/twenty-server/dist/src/engine/workspace-manager/workspace-sync-metadata/workspace-sync-metadata.service.js:67:46) at async SyncWorkspaceMetadataCommand.run (/app/packages/twenty-server/dist/src/engine/workspace-manager/workspace-sync-metadata/commands/sync-workspace-metadata.command.js:52:54) { length: 123, severity: 'ERROR', code: '42P01', detail: undefined, hint: undefined, position: '2782', internalPosition: undefined, internalQuery: undefined, where: undefined, schema: undefined, table: undefined, column: undefined, dataType: undefined, constraint: undefined, file: 'parse_relation.c', line: '1371', routine: 'parserOpenTable' }, length: 123, severity: 'ERROR', code: '42P01', detail: undefined, hint: undefined, position: '2782', internalPosition: undefined, internalQuery: undefined, where: undefined, schema: undefined, table: undefined, column: undefined, dataType: undefined, constraint: undefined, file: 'parse_relation.c', line: '1371', routine: 'parserOpenTable' }
@FelixMalfait meanwhile I had to recreate all the model of the database in 0.20.
I'm waiting for someone to answer about the upgrade process from 0.20. I aslo wrote on discord (no answer)
@mnbro yes sorry about that we suck at facilitating upgrades, that's part of the reason why we're still in alpha. 0.22 to 0.23 and all updates forward will be properly documented at least.
Based on the error above, you also need to migrate the core schema before running yarn command:prod workspace:sync-metadata -w WORKSPACE_ID -f
; to do that you should run yarn database:migrate:prod
before, that will create the missing indexMetadata column mentioned in the error
@mnbro yes sorry about that we suck at facilitating upgrades, that's part of the reason why we're still in alpha. 0.22 to 0.23 and all updates forward will be properly documented at least.
Based on the error above, you also need to migrate the core schema before running
yarn command:prod workspace:sync-metadata -w WORKSPACE_ID -f
; to do that you should runyarn database:migrate:prod
before, that will create the missing indexMetadata column mentioned in the error
@FelixMalfait Thank you for your answer.
I hope that for the future versions and/or when you will go in beta you will have procedures for all previous versions, not only starting from 0.21. I'll wait for that moment before trying again to upgrade.
No we will not have procedure for previous versions, so I wouldd upgrade sooner than later to avoid losing the train. Sorry
@FelixMalfait Ok, so I pulled the trigger and did the upgrade to 0.22 with no errors being returned by any command. The timeline events are present.
But when I yarn command:prod workspace:health
I receive [WorkspaceHealthCommand] Workspace is not healthy, found 2 issues
.
My question is: Was the upgrade process successful?
@mnbro yes I'm no expert on that side but I believe there are some minor elements that can cause to say a workspace is not healthy but that are not an issue. If everything works on the app, you're good!
I managed to find how to get more details on the errors.
Can i assume that everything is OK given the below?
[ { "type": "COLUMN_NULLABILITY_CONFLICT", "fieldMetadata": { "id": "a965f77e-5381-430b-9cf8-18f152e12db9", "standardId": "20202020-e914-43a6-9c26-3603c59065f4", "objectMetadataId": "a890f95a-3c62-4403-823f-1c1839ddcbca", "type": "FULL_NAME", "name": "name", "label": "Name", "defaultValue": { "lastName": "''", "firstName": "''" }, "description": "Workspace member name", "icon": "IconCircleUser", "options": null, "settings": null, "isCustom": false, "isActive": true, "isSystem": true, "isNullable": false, "workspaceId": "eb157b19-7341-42cc-8390-614cfb802350", "createdAt": "2024-07-15T15:33:34.187Z", "updatedAt": "2024-07-15T15:33:34.187Z", "object": { "id": "a890f95a-3c62-4403-823f-1c1839ddcbca", "standardId": "20202020-3319-4234-a34c-82d5c0e881a6", "dataSourceId": "d120d161-7f6f-423b-b356-16af28878ce6", "nameSingular": "workspaceMember", "namePlural": "workspaceMembers", "labelSingular": "Workspace Member", "labelPlural": "Workspace Members", "description": "A workspace member", "icon": "IconUserCircle", "targetTableName": "DEPRECATED", "isCustom": false, "isRemote": false, "isActive": true, "isSystem": true, "isAuditLogged": false, "labelIdentifierFieldMetadataId": null, "imageIdentifierFieldMetadataId": null, "workspaceId": "eb157b19-7341-42cc-8390-614cfb802350", "createdAt": "2024-07-15T15:33:34.187Z", "updatedAt": "2024-07-15T15:33:34.187Z" }, "fromRelationMetadata": null, "toRelationMetadata": null }, "columnStructure": { "tableSchema": "workspace_dx14ktp2l6zvlyyr56b1rtykw", "tableName": "workspaceMember", "columnName": "nameFirstName", "dataType": "text", "isNullable": true, "columnDefault": "''::text", "isPrimaryKey": false, "isForeignKey": false, "isUnique": false, "isArray": false, "onUpdateAction": null, "onDeleteAction": null }, "message": "Column nameFirstName is expected to be not nullable but is nullable" }, { "type": "COLUMN_NULLABILITY_CONFLICT", "fieldMetadata": { "id": "a965f77e-5381-430b-9cf8-18f152e12db9", "standardId": "20202020-e914-43a6-9c26-3603c59065f4", "objectMetadataId": "a890f95a-3c62-4403-823f-1c1839ddcbca", "type": "FULL_NAME", "name": "name", "label": "Name", "defaultValue": { "lastName": "''", "firstName": "''" }, "description": "Workspace member name", "icon": "IconCircleUser", "options": null, "settings": null, "isCustom": false, "isActive": true, "isSystem": true, "isNullable": false, "workspaceId": "eb157b19-7341-42cc-8390-614cfb802350", "createdAt": "2024-07-15T15:33:34.187Z", "updatedAt": "2024-07-15T15:33:34.187Z", "object": { "id": "a890f95a-3c62-4403-823f-1c1839ddcbca", "standardId": "20202020-3319-4234-a34c-82d5c0e881a6", "dataSourceId": "d120d161-7f6f-423b-b356-16af28878ce6", "nameSingular": "workspaceMember", "namePlural": "workspaceMembers", "labelSingular": "Workspace Member", "labelPlural": "Workspace Members", "description": "A workspace member", "icon": "IconUserCircle", "targetTableName": "DEPRECATED", "isCustom": false, "isRemote": false, "isActive": true, "isSystem": true, "isAuditLogged": false, "labelIdentifierFieldMetadataId": null, "imageIdentifierFieldMetadataId": null, "workspaceId": "eb157b19-7341-42cc-8390-614cfb802350", "createdAt": "2024-07-15T15:33:34.187Z", "updatedAt": "2024-07-15T15:33:34.187Z" }, "fromRelationMetadata": null, "toRelationMetadata": null }, "columnStructure": { "tableSchema": "workspace_dx14ktp2l6zvlyyr56b1rtykw", "tableName": "workspaceMember", "columnName": "nameLastName", "dataType": "text", "isNullable": true, "columnDefault": "''::text", "isPrimaryKey": false, "isForeignKey": false, "isUnique": false, "isArray": false, "onUpdateAction": null, "onDeleteAction": null }, "message": "Column nameLastName is expected to be not nullable but is nullable" }
@mnbro yes that shouldn't cause any issue
Hi,
For all v0.21.x of twentycrm for Any selected object there is No Event in TimeLine.
I think is related to this:
GraphQLError:relation "workspace_1tijfbhq4kpru5g3bwbr1anui.calendarEvent" does not exist File "/app/node_modules/typeorm/driver/postgres/PostgresQueryRunner.js", line 219, col 19, in PostgresQueryRunner.query throw new QueryFailedError_1.QueryFailedError(query, parameters, err); File "node:internal/process/task_queues", line 95, col 5, in process.processTicksAndRejections File "/app/node_modules/typeorm/query-builder/SelectQueryBuilder.js", line 2192, col 25, in SelectQueryBuilder.loadRawResults const results = await queryRunner.query(sql, parameters, true); File "/app/node_modules/typeorm/query-builder/SelectQueryBuilder.js", line 646, col 29, in SelectQueryBuilder.getRawMany const results = await this.loadRawResults(queryRunner); File "/app/node_modules/typeorm/query-builder/SelectQueryBuilder.js", line 1979, col 26, in SelectQueryBuilder.executeEntitiesAndRawResults rawResults = await new SelectQueryBuilder(this.connection, queryRunner) File "/app/node_modules/typeorm/query-builder/SelectQueryBuilder.js", line 684, col 29, in SelectQueryBuilder.getRawAndEntities const results = await this.executeEntitiesAndRawResults(queryRunner); File "/app/node_modules/typeorm/query-builder/SelectQueryBuilder.js", line 750, col 25, in SelectQueryBuilder.getMany const results = await this.getRawAndEntities(); File "/app/packages/twenty-server/dist/src/engine/twenty-orm/repository/workspace.repository.js", line 24, col 24, in WorkspaceRepository.find const result = await manager.find(this.target, computedOptions); File "/app/packages/twenty-server/dist/src/engine/core-modules/calendar/timeline-calendar-event.service.js", line 43, col 34, in TimelineCalendarEventService.getCalendarEventsFromPersonIds const calendarEventIds = await this.calendarEventRepository.find({ File "/app/packages/twenty-server/dist/src/engine/core-modules/calendar/timeline-calendar-event.resolver.js", line 74, col 40, in TimelineCalendarEventResolver.getTimelineCalendarEventsFromPersonId const timelineCalendarEvents = await this.timelineCalendarEventService.getCalendarEventsFromPersonIds([
Additional Info(I have no Google Account Integration configured):
query GetTimelineCalendarEventsFromPersonId($personId: UUID!, $page: Int!, $pageSize: Int!) { getTimelineCalendarEventsFromPersonId( personId: $personId page: $page pageSize: $pageSize ) { ...TimelineCalendarEventsWithTotalFragment __typename } } fragment TimelineCalendarEventsWithTotalFragment on TimelineCalendarEventsWithTotal { totalNumberOfCalendarEvents timelineCalendarEvents { ...TimelineCalendarEventFragment __typename } __typename } fragment TimelineCalendarEventFragment on TimelineCalendarEvent { id title description location startsAt endsAt isFullDay visibility participants { ...TimelineCalendarEventParticipantFragment __typename } __typename } fragment TimelineCalendarEventParticipantFragment on TimelineCalendarEventParticipant { personId workspaceMemberId firstName lastName displayName avatarUrl handle __typename }
Do you need other related info?