From 676cf838aff99a18a735c07e21acf460d33da633 Mon Sep 17 00:00:00 2001 From: nitin <142569587+ehconitin@users.noreply.github.com> Date: Tue, 5 Aug 2025 12:43:09 +0530 Subject: [PATCH] [CleanUp] Post api keys and webhooks migration cleanup (#13576) --- .../src/generated-metadata/graphql.ts | 1 - .../twenty-front/src/generated/graphql.ts | 1 - .../listeners/entity-events-to-db.listener.ts | 4 +- .../enums/feature-flag-key.enum.ts | 1 - .../core-modules/message-queue/jobs.module.ts | 2 +- .../webhook/jobs/call-webhook-jobs.job.ts | 4 +- .../webhook/jobs/call-webhook.job.ts | 0 .../webhook/jobs/webhook-job.module.ts | 4 +- .../object-record-event-for-webhook.type.ts | 0 .../workspace-entity-manager.spec.ts | 2 - .../constants/standard-field-ids.ts | 16 ---- .../constants/standard-object-ids.ts | 2 - .../standard-objects/index.ts | 4 - .../api-key.workspace-entity.ts | 57 -------------- .../webhook.workspace-entity.ts | 78 ------------------- 15 files changed, 7 insertions(+), 169 deletions(-) rename packages/twenty-server/src/{modules => engine/core-modules}/webhook/jobs/call-webhook-jobs.job.ts (95%) rename packages/twenty-server/src/{modules => engine/core-modules}/webhook/jobs/call-webhook.job.ts (100%) rename packages/twenty-server/src/{modules => engine/core-modules}/webhook/jobs/webhook-job.module.ts (67%) rename packages/twenty-server/src/{modules => engine/core-modules}/webhook/types/object-record-event-for-webhook.type.ts (100%) delete mode 100644 packages/twenty-server/src/modules/api-key/standard-objects/api-key.workspace-entity.ts delete mode 100644 packages/twenty-server/src/modules/webhook/standard-objects/webhook.workspace-entity.ts diff --git a/packages/twenty-front/src/generated-metadata/graphql.ts b/packages/twenty-front/src/generated-metadata/graphql.ts index f39f66cd73e..fbd714a05a2 100644 --- a/packages/twenty-front/src/generated-metadata/graphql.ts +++ b/packages/twenty-front/src/generated-metadata/graphql.ts @@ -799,7 +799,6 @@ export enum FeatureFlagKey { IS_UNIQUE_INDEXES_ENABLED = 'IS_UNIQUE_INDEXES_ENABLED', IS_WORKFLOW_BRANCH_ENABLED = 'IS_WORKFLOW_BRANCH_ENABLED', IS_WORKFLOW_FILTERING_ENABLED = 'IS_WORKFLOW_FILTERING_ENABLED', - IS_WORKSPACE_API_KEY_WEBHOOK_GRAPHQL_ENABLED = 'IS_WORKSPACE_API_KEY_WEBHOOK_GRAPHQL_ENABLED', IS_WORKSPACE_MIGRATION_V2_ENABLED = 'IS_WORKSPACE_MIGRATION_V2_ENABLED' } diff --git a/packages/twenty-front/src/generated/graphql.ts b/packages/twenty-front/src/generated/graphql.ts index b2ca6659ebe..a85f6cf7f5d 100644 --- a/packages/twenty-front/src/generated/graphql.ts +++ b/packages/twenty-front/src/generated/graphql.ts @@ -763,7 +763,6 @@ export enum FeatureFlagKey { IS_UNIQUE_INDEXES_ENABLED = 'IS_UNIQUE_INDEXES_ENABLED', IS_WORKFLOW_BRANCH_ENABLED = 'IS_WORKFLOW_BRANCH_ENABLED', IS_WORKFLOW_FILTERING_ENABLED = 'IS_WORKFLOW_FILTERING_ENABLED', - IS_WORKSPACE_API_KEY_WEBHOOK_GRAPHQL_ENABLED = 'IS_WORKSPACE_API_KEY_WEBHOOK_GRAPHQL_ENABLED', IS_WORKSPACE_MIGRATION_V2_ENABLED = 'IS_WORKSPACE_MIGRATION_V2_ENABLED' } diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/listeners/entity-events-to-db.listener.ts b/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/listeners/entity-events-to-db.listener.ts index 09c98d3539e..dec9dde90c4 100644 --- a/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/listeners/entity-events-to-db.listener.ts +++ b/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/listeners/entity-events-to-db.listener.ts @@ -16,8 +16,8 @@ import { MessageQueueService } from 'src/engine/core-modules/message-queue/servi import { SubscriptionsJob } from 'src/engine/subscriptions/subscriptions.job'; import { WorkspaceEventBatch } from 'src/engine/workspace-event-emitter/types/workspace-event.type'; import { UpsertTimelineActivityFromInternalEvent } from 'src/modules/timeline/jobs/upsert-timeline-activity-from-internal-event.job'; -import { CallWebhookJobsJob } from 'src/modules/webhook/jobs/call-webhook-jobs.job'; -import { ObjectRecordEventForWebhook } from 'src/modules/webhook/types/object-record-event-for-webhook.type'; +import { CallWebhookJobsJob } from 'src/engine/core-modules/webhook/jobs/call-webhook-jobs.job'; +import { ObjectRecordEventForWebhook } from 'src/engine/core-modules/webhook/types/object-record-event-for-webhook.type'; @Injectable() export class EntityEventsToDbListener { diff --git a/packages/twenty-server/src/engine/core-modules/feature-flag/enums/feature-flag-key.enum.ts b/packages/twenty-server/src/engine/core-modules/feature-flag/enums/feature-flag-key.enum.ts index c64b690fe25..a4b0dd076af 100644 --- a/packages/twenty-server/src/engine/core-modules/feature-flag/enums/feature-flag-key.enum.ts +++ b/packages/twenty-server/src/engine/core-modules/feature-flag/enums/feature-flag-key.enum.ts @@ -10,7 +10,6 @@ export enum FeatureFlagKey { IS_WORKFLOW_FILTERING_ENABLED = 'IS_WORKFLOW_FILTERING_ENABLED', IS_WORKFLOW_BRANCH_ENABLED = 'IS_WORKFLOW_BRANCH_ENABLED', IS_RELATION_CONNECT_ENABLED = 'IS_RELATION_CONNECT_ENABLED', - IS_WORKSPACE_API_KEY_WEBHOOK_GRAPHQL_ENABLED = 'IS_WORKSPACE_API_KEY_WEBHOOK_GRAPHQL_ENABLED', IS_FIELDS_PERMISSIONS_ENABLED = 'IS_FIELDS_PERMISSIONS_ENABLED', IS_CORE_VIEW_SYNCING_ENABLED = 'IS_CORE_VIEW_SYNCING_ENABLED', IS_TWO_FACTOR_AUTHENTICATION_ENABLED = 'IS_TWO_FACTOR_AUTHENTICATION_ENABLED', diff --git a/packages/twenty-server/src/engine/core-modules/message-queue/jobs.module.ts b/packages/twenty-server/src/engine/core-modules/message-queue/jobs.module.ts index 1f6b384da8a..50706ed7241 100644 --- a/packages/twenty-server/src/engine/core-modules/message-queue/jobs.module.ts +++ b/packages/twenty-server/src/engine/core-modules/message-queue/jobs.module.ts @@ -31,7 +31,7 @@ import { FavoriteModule } from 'src/modules/favorite/favorite.module'; import { MessagingModule } from 'src/modules/messaging/messaging.module'; import { TimelineJobModule } from 'src/modules/timeline/jobs/timeline-job.module'; import { TimelineActivityModule } from 'src/modules/timeline/timeline-activity.module'; -import { WebhookJobModule } from 'src/modules/webhook/jobs/webhook-job.module'; +import { WebhookJobModule } from 'src/engine/core-modules/webhook/jobs/webhook-job.module'; import { WorkflowModule } from 'src/modules/workflow/workflow.module'; @Module({ diff --git a/packages/twenty-server/src/modules/webhook/jobs/call-webhook-jobs.job.ts b/packages/twenty-server/src/engine/core-modules/webhook/jobs/call-webhook-jobs.job.ts similarity index 95% rename from packages/twenty-server/src/modules/webhook/jobs/call-webhook-jobs.job.ts rename to packages/twenty-server/src/engine/core-modules/webhook/jobs/call-webhook-jobs.job.ts index 9e40ca9cee6..10fa97bd657 100644 --- a/packages/twenty-server/src/modules/webhook/jobs/call-webhook-jobs.job.ts +++ b/packages/twenty-server/src/engine/core-modules/webhook/jobs/call-webhook-jobs.job.ts @@ -11,8 +11,8 @@ import { WorkspaceEventBatch } from 'src/engine/workspace-event-emitter/types/wo import { CallWebhookJob, CallWebhookJobData, -} from 'src/modules/webhook/jobs/call-webhook.job'; -import { ObjectRecordEventForWebhook } from 'src/modules/webhook/types/object-record-event-for-webhook.type'; +} from 'src/engine/core-modules/webhook/jobs/call-webhook.job'; +import { ObjectRecordEventForWebhook } from 'src/engine/core-modules/webhook/types/object-record-event-for-webhook.type'; import { removeSecretFromWebhookRecord } from 'src/utils/remove-secret-from-webhook-record'; @Processor(MessageQueue.webhookQueue) diff --git a/packages/twenty-server/src/modules/webhook/jobs/call-webhook.job.ts b/packages/twenty-server/src/engine/core-modules/webhook/jobs/call-webhook.job.ts similarity index 100% rename from packages/twenty-server/src/modules/webhook/jobs/call-webhook.job.ts rename to packages/twenty-server/src/engine/core-modules/webhook/jobs/call-webhook.job.ts diff --git a/packages/twenty-server/src/modules/webhook/jobs/webhook-job.module.ts b/packages/twenty-server/src/engine/core-modules/webhook/jobs/webhook-job.module.ts similarity index 67% rename from packages/twenty-server/src/modules/webhook/jobs/webhook-job.module.ts rename to packages/twenty-server/src/engine/core-modules/webhook/jobs/webhook-job.module.ts index b3a5704e042..f1e291d9e72 100644 --- a/packages/twenty-server/src/modules/webhook/jobs/webhook-job.module.ts +++ b/packages/twenty-server/src/engine/core-modules/webhook/jobs/webhook-job.module.ts @@ -3,8 +3,8 @@ import { Module } from '@nestjs/common'; import { AuditModule } from 'src/engine/core-modules/audit/audit.module'; import { WebhookModule } from 'src/engine/core-modules/webhook/webhook.module'; -import { CallWebhookJobsJob } from 'src/modules/webhook/jobs/call-webhook-jobs.job'; -import { CallWebhookJob } from 'src/modules/webhook/jobs/call-webhook.job'; +import { CallWebhookJobsJob } from 'src/engine/core-modules/webhook/jobs/call-webhook-jobs.job'; +import { CallWebhookJob } from 'src/engine/core-modules/webhook/jobs/call-webhook.job'; @Module({ imports: [HttpModule, AuditModule, WebhookModule], diff --git a/packages/twenty-server/src/modules/webhook/types/object-record-event-for-webhook.type.ts b/packages/twenty-server/src/engine/core-modules/webhook/types/object-record-event-for-webhook.type.ts similarity index 100% rename from packages/twenty-server/src/modules/webhook/types/object-record-event-for-webhook.type.ts rename to packages/twenty-server/src/engine/core-modules/webhook/types/object-record-event-for-webhook.type.ts diff --git a/packages/twenty-server/src/engine/twenty-orm/entity-manager/workspace-entity-manager.spec.ts b/packages/twenty-server/src/engine/twenty-orm/entity-manager/workspace-entity-manager.spec.ts index 8d90ee5fea0..6981eb054ef 100644 --- a/packages/twenty-server/src/engine/twenty-orm/entity-manager/workspace-entity-manager.spec.ts +++ b/packages/twenty-server/src/engine/twenty-orm/entity-manager/workspace-entity-manager.spec.ts @@ -133,7 +133,6 @@ describe('WorkspaceEntityManager', () => { IS_WORKFLOW_FILTERING_ENABLED: false, IS_WORKFLOW_BRANCH_ENABLED: false, IS_RELATION_CONNECT_ENABLED: false, - IS_WORKSPACE_API_KEY_WEBHOOK_GRAPHQL_ENABLED: false, IS_FIELDS_PERMISSIONS_ENABLED: false, IS_CORE_VIEW_SYNCING_ENABLED: false, IS_TWO_FACTOR_AUTHENTICATION_ENABLED: false, @@ -159,7 +158,6 @@ describe('WorkspaceEntityManager', () => { IS_MORPH_RELATION_ENABLED: false, IS_WORKFLOW_FILTERING_ENABLED: false, IS_RELATION_CONNECT_ENABLED: false, - IS_WORKSPACE_API_KEY_WEBHOOK_GRAPHQL_ENABLED: false, IS_FIELDS_PERMISSIONS_ENABLED: true, IS_CORE_VIEW_SYNCING_ENABLED: false, IS_TWO_FACTOR_AUTHENTICATION_ENABLED: false, diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids.ts index af40768f864..e0b887ec398 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids.ts @@ -29,12 +29,6 @@ export const ACTIVITY_STANDARD_FIELD_IDS = { assignee: '20202020-4259-48e4-9e77-6b92991906d5', }; -export const API_KEY_STANDARD_FIELD_IDS = { - name: '20202020-72e6-4079-815b-436ce8a62f23', - expiresAt: '20202020-659b-4241-af59-66515b8e7d40', - revokedAt: '20202020-06ab-44b5-8faf-f6e407685001', -}; - export const ATTACHMENT_STANDARD_FIELD_IDS = { name: '20202020-87a5-48f8-bbf7-ade388825a57', fullPath: '20202020-0d19-453d-8e8d-fbcda8ca3747', @@ -447,14 +441,6 @@ export const VIEW_STANDARD_FIELD_IDS = { anyFieldFilterValue: '20202020-3143-46c0-bb05-034063ce0703', }; -export const WEBHOOK_STANDARD_FIELD_IDS = { - targetUrl: '20202020-1229-45a8-8cf4-85c9172aae12', - operation: '20202020-15b7-458e-bf30-74770a54410c', - operations: '20202020-15b7-458e-bf30-74770a54411c', - description: '20202020-15b7-458e-bf30-74770a54410d', - secret: '20202020-97ce-410f-bff9-e9ccb038fb67', -}; - export const WORKFLOW_AUTOMATED_TRIGGER_STANDARD_FIELD_IDS = { type: '20202020-3319-4234-a34c-3f92c1ab56e7', settings: '20202020-3319-4234-a34c-bac8f903de12', @@ -552,7 +538,6 @@ export const CUSTOM_OBJECT_STANDARD_FIELD_IDS = { export const STANDARD_OBJECT_FIELD_IDS = { activityTarget: ACTIVITY_TARGET_STANDARD_FIELD_IDS, activity: ACTIVITY_STANDARD_FIELD_IDS, - apiKey: API_KEY_STANDARD_FIELD_IDS, attachment: ATTACHMENT_STANDARD_FIELD_IDS, blocklist: BLOCKLIST_STANDARD_FIELD_IDS, behavioralEvent: BEHAVIORAL_EVENT_STANDARD_FIELD_IDS, @@ -585,7 +570,6 @@ export const STANDARD_OBJECT_FIELD_IDS = { viewFilter: VIEW_FILTER_STANDARD_FIELD_IDS, viewSort: VIEW_SORT_STANDARD_FIELD_IDS, view: VIEW_STANDARD_FIELD_IDS, - webhook: WEBHOOK_STANDARD_FIELD_IDS, workflow: WORKFLOW_STANDARD_FIELD_IDS, workflowRun: WORKFLOW_RUN_STANDARD_FIELD_IDS, workflowVersion: WORKFLOW_VERSION_STANDARD_FIELD_IDS, diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids.ts index 056ce5d1d77..3358e911bb2 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids.ts @@ -9,7 +9,6 @@ export const STANDARD_OBJECT_IDS = { // TODO: check if activity, activityTarget and comment can be deleted activityTarget: '20202020-2945-440e-8d1a-f84672d33d5e', activity: '20202020-39aa-4a89-843b-eb5f2a8b677f', - apiKey: '20202020-4c00-401d-8cda-ec6a4c41cd7d', attachment: '20202020-bd3d-4c60-8dca-571c71d4447a', blocklist: '20202020-0408-4f38-b8a8-4d5e3e26e24d', behavioralEvent: '20202020-983d-416b-a5ee-bdd0da3d0f8f', @@ -43,7 +42,6 @@ export const STANDARD_OBJECT_IDS = { viewFilterGroup: '20202020-b920-4b11-92aa-9b07d878e542', viewSort: '20202020-e46a-47a8-939a-e5d911f83531', view: '20202020-722e-4739-8e2c-0c372d661f49', - webhook: '20202020-be4d-4e08-811d-0fffcd13ffd4', workflow: '20202020-62be-406c-b9ca-8caa50d51392', workflowEventListener: '20202020-92aa-462f-965c-a785b00e9989', workflowRun: '20202020-4e28-4e95-a9d7-6c00874f843c', diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/standard-objects/index.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/standard-objects/index.ts index cb6e807f0e4..80a080fb187 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/standard-objects/index.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/standard-objects/index.ts @@ -1,4 +1,3 @@ -import { ApiKeyWorkspaceEntity } from 'src/modules/api-key/standard-objects/api-key.workspace-entity'; import { AttachmentWorkspaceEntity } from 'src/modules/attachment/standard-objects/attachment.workspace-entity'; import { BlocklistWorkspaceEntity } from 'src/modules/blocklist/standard-objects/blocklist.workspace-entity'; import { CalendarChannelEventAssociationWorkspaceEntity } from 'src/modules/calendar/common/standard-objects/calendar-channel-event-association.workspace-entity'; @@ -28,7 +27,6 @@ import { ViewFilterWorkspaceEntity } from 'src/modules/view/standard-objects/vie import { ViewGroupWorkspaceEntity } from 'src/modules/view/standard-objects/view-group.workspace-entity'; import { ViewSortWorkspaceEntity } from 'src/modules/view/standard-objects/view-sort.workspace-entity'; import { ViewWorkspaceEntity } from 'src/modules/view/standard-objects/view.workspace-entity'; -import { WebhookWorkspaceEntity } from 'src/modules/webhook/standard-objects/webhook.workspace-entity'; import { WorkflowAutomatedTriggerWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow-automated-trigger.workspace-entity'; import { WorkflowRunWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow-run.workspace-entity'; import { WorkflowVersionWorkspaceEntity } from 'src/modules/workflow/common/standard-objects/workflow-version.workspace-entity'; @@ -71,6 +69,4 @@ export const standardObjectMetadataDefinitions = [ PersonWorkspaceEntity, TaskWorkspaceEntity, TaskTargetWorkspaceEntity, - ApiKeyWorkspaceEntity, - WebhookWorkspaceEntity, ]; diff --git a/packages/twenty-server/src/modules/api-key/standard-objects/api-key.workspace-entity.ts b/packages/twenty-server/src/modules/api-key/standard-objects/api-key.workspace-entity.ts deleted file mode 100644 index a3c0b6fe6fb..00000000000 --- a/packages/twenty-server/src/modules/api-key/standard-objects/api-key.workspace-entity.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { msg } from '@lingui/core/macro'; -import { FieldMetadataType } from 'twenty-shared/types'; - -import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; -import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator'; -import { WorkspaceGate } from 'src/engine/twenty-orm/decorators/workspace-gate.decorator'; -import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator'; -import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; -import { API_KEY_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; -import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons'; -import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids'; - -@WorkspaceEntity({ - standardId: STANDARD_OBJECT_IDS.apiKey, - namePlural: 'apiKeys', - labelSingular: msg`API Key`, - labelPlural: msg`API Keys`, - description: msg`An API key`, - icon: STANDARD_OBJECT_ICONS.apiKey, - labelIdentifierStandardId: API_KEY_STANDARD_FIELD_IDS.name, -}) -@WorkspaceIsSystem() -@WorkspaceGate({ - featureFlag: 'IS_WORKSPACE_API_KEY_WEBHOOK_GRAPHQL_ENABLED', - excludeFromDatabase: false, - excludeFromWorkspaceApi: true, -}) -export class ApiKeyWorkspaceEntity extends BaseWorkspaceEntity { - @WorkspaceField({ - standardId: API_KEY_STANDARD_FIELD_IDS.name, - type: FieldMetadataType.TEXT, - label: msg`Name`, - description: msg`ApiKey name`, - icon: 'IconLink', - }) - name: string; - - @WorkspaceField({ - standardId: API_KEY_STANDARD_FIELD_IDS.expiresAt, - type: FieldMetadataType.DATE_TIME, - label: msg`Expiration date`, - description: msg`ApiKey expiration date`, - icon: 'IconCalendar', - }) - expiresAt: Date; - - @WorkspaceField({ - standardId: API_KEY_STANDARD_FIELD_IDS.revokedAt, - type: FieldMetadataType.DATE_TIME, - label: msg`Revocation date`, - description: msg`ApiKey revocation date`, - icon: 'IconCalendar', - }) - @WorkspaceIsNullable() - revokedAt?: Date | null; -} diff --git a/packages/twenty-server/src/modules/webhook/standard-objects/webhook.workspace-entity.ts b/packages/twenty-server/src/modules/webhook/standard-objects/webhook.workspace-entity.ts deleted file mode 100644 index 8411521b06a..00000000000 --- a/packages/twenty-server/src/modules/webhook/standard-objects/webhook.workspace-entity.ts +++ /dev/null @@ -1,78 +0,0 @@ -import { msg } from '@lingui/core/macro'; -import { FieldMetadataType } from 'twenty-shared/types'; - -import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity'; -import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator'; -import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator'; -import { WorkspaceGate } from 'src/engine/twenty-orm/decorators/workspace-gate.decorator'; -import { WorkspaceIsDeprecated } from 'src/engine/twenty-orm/decorators/workspace-is-deprecated.decorator'; -import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator'; -import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator'; -import { WEBHOOK_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids'; -import { STANDARD_OBJECT_ICONS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-icons'; -import { STANDARD_OBJECT_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-object-ids'; - -@WorkspaceEntity({ - standardId: STANDARD_OBJECT_IDS.webhook, - namePlural: 'webhooks', - labelSingular: msg`Webhook`, - labelPlural: msg`Webhooks`, - description: msg`A webhook`, - icon: STANDARD_OBJECT_ICONS.webhook, - labelIdentifierStandardId: WEBHOOK_STANDARD_FIELD_IDS.targetUrl, -}) -@WorkspaceIsSystem() -@WorkspaceGate({ - featureFlag: 'IS_WORKSPACE_API_KEY_WEBHOOK_GRAPHQL_ENABLED', - excludeFromDatabase: false, - excludeFromWorkspaceApi: true, -}) -export class WebhookWorkspaceEntity extends BaseWorkspaceEntity { - @WorkspaceField({ - standardId: WEBHOOK_STANDARD_FIELD_IDS.targetUrl, - type: FieldMetadataType.TEXT, - label: msg`Target Url`, - description: msg`Webhook target url`, - icon: 'IconLink', - }) - targetUrl: string; - - @WorkspaceField({ - standardId: WEBHOOK_STANDARD_FIELD_IDS.operation, - type: FieldMetadataType.TEXT, - label: msg`Operation`, - description: msg`Webhook operation`, - icon: 'IconCheckbox', - }) - @WorkspaceIsDeprecated() - operation: string; - - @WorkspaceField({ - standardId: WEBHOOK_STANDARD_FIELD_IDS.operations, - type: FieldMetadataType.ARRAY, - label: msg`Operations`, - description: msg`Webhook operations`, - icon: 'IconCheckbox', - defaultValue: ['*.*'], - }) - operations: string[]; - - @WorkspaceField({ - standardId: WEBHOOK_STANDARD_FIELD_IDS.description, - type: FieldMetadataType.TEXT, - label: msg`Description`, - description: undefined, - icon: 'IconInfo', - }) - @WorkspaceIsNullable() - description: string; - - @WorkspaceField({ - standardId: WEBHOOK_STANDARD_FIELD_IDS.secret, - type: FieldMetadataType.TEXT, - label: msg`Secret`, - description: msg`Optional secret used to compute the HMAC signature for webhook payloads. This secret is shared between Twenty and the webhook consumer to authenticate webhook requests.`, - icon: 'IconLock', - }) - secret: string; -}