@@ -7,6 +7,7 @@ import { type NextRequest, NextResponse } from 'next/server'
77import { getSession } from '@/lib/auth'
88import { PlatformEvents } from '@/lib/core/telemetry'
99import { generateRequestId } from '@/lib/core/utils/request'
10+ import { resolveEnvVarsInObject } from '@/lib/webhooks/env-resolver'
1011import { createExternalWebhookSubscription } from '@/lib/webhooks/provider-subscriptions'
1112import { getUserEntityPermissions } from '@/lib/workspaces/permissions/utils'
1213
@@ -298,14 +299,10 @@ export async function POST(request: NextRequest) {
298299 }
299300 }
300301
301- let savedWebhook : any = null // Variable to hold the result of save/update
302-
303- // Use the original provider config - Gmail/Outlook configuration functions will inject userId automatically
304- const finalProviderConfig = providerConfig || { }
305-
306- const { resolveEnvVarsInObject } = await import ( '@/lib/webhooks/env-resolver' )
302+ let savedWebhook : any = null
303+ const originalProviderConfig = providerConfig || { }
307304 let resolvedProviderConfig = await resolveEnvVarsInObject (
308- finalProviderConfig ,
305+ originalProviderConfig ,
309306 userId ,
310307 workflowRecord . workspaceId || undefined
311308 )
@@ -469,6 +466,8 @@ export async function POST(request: NextRequest) {
469466 providerConfig : providerConfigOverride ,
470467 } )
471468
469+ const configToSave = { ...originalProviderConfig }
470+
472471 try {
473472 const result = await createExternalWebhookSubscription (
474473 request ,
@@ -477,7 +476,13 @@ export async function POST(request: NextRequest) {
477476 userId ,
478477 requestId
479478 )
480- resolvedProviderConfig = result . updatedProviderConfig as Record < string , unknown >
479+ const updatedConfig = result . updatedProviderConfig as Record < string , unknown >
480+ for ( const [ key , value ] of Object . entries ( updatedConfig ) ) {
481+ if ( ! ( key in originalProviderConfig ) ) {
482+ configToSave [ key ] = value
483+ }
484+ }
485+ resolvedProviderConfig = updatedConfig
481486 externalSubscriptionCreated = result . externalSubscriptionCreated
482487 } catch ( err ) {
483488 logger . error ( `[${ requestId } ] Error creating external webhook subscription` , err )
@@ -490,25 +495,22 @@ export async function POST(request: NextRequest) {
490495 )
491496 }
492497
493- // Now save to database (only if subscription succeeded or provider doesn't need external subscription)
494498 try {
495499 if ( targetWebhookId ) {
496500 logger . info ( `[${ requestId } ] Updating existing webhook for path: ${ finalPath } ` , {
497501 webhookId : targetWebhookId ,
498502 provider,
499- hasCredentialId : ! ! ( resolvedProviderConfig as any ) ?. credentialId ,
500- credentialId : ( resolvedProviderConfig as any ) ?. credentialId ,
503+ hasCredentialId : ! ! ( configToSave as any ) ?. credentialId ,
504+ credentialId : ( configToSave as any ) ?. credentialId ,
501505 } )
502506 const updatedResult = await db
503507 . update ( webhook )
504508 . set ( {
505509 blockId,
506510 provider,
507- providerConfig : resolvedProviderConfig ,
511+ providerConfig : configToSave ,
508512 credentialSetId :
509- ( ( resolvedProviderConfig as Record < string , unknown > ) ?. credentialSetId as
510- | string
511- | null ) || null ,
513+ ( ( configToSave as Record < string , unknown > ) ?. credentialSetId as string | null ) || null ,
512514 isActive : true ,
513515 updatedAt : new Date ( ) ,
514516 } )
@@ -531,11 +533,9 @@ export async function POST(request: NextRequest) {
531533 blockId,
532534 path : finalPath ,
533535 provider,
534- providerConfig : resolvedProviderConfig ,
536+ providerConfig : configToSave ,
535537 credentialSetId :
536- ( ( resolvedProviderConfig as Record < string , unknown > ) ?. credentialSetId as
537- | string
538- | null ) || null ,
538+ ( ( configToSave as Record < string , unknown > ) ?. credentialSetId as string | null ) || null ,
539539 isActive : true ,
540540 createdAt : new Date ( ) ,
541541 updatedAt : new Date ( ) ,
@@ -549,7 +549,7 @@ export async function POST(request: NextRequest) {
549549 try {
550550 const { cleanupExternalWebhook } = await import ( '@/lib/webhooks/provider-subscriptions' )
551551 await cleanupExternalWebhook (
552- createTempWebhookData ( resolvedProviderConfig ) ,
552+ createTempWebhookData ( configToSave ) ,
553553 workflowRecord ,
554554 requestId
555555 )
0 commit comments