@@ -861,24 +861,9 @@ export const InstantlyBlock: BlockConfig<InstantlyResponse> = {
861861 config : {
862862 tool : ( params ) => `instantly_${ params . operation } ` ,
863863 params : ( params ) => ( {
864- campaign :
865- params . operation === 'list_leads'
866- ? optionalIdParam ( params . campaignId )
867- : params . leadDestination === 'campaign'
868- ? optionalIdParam ( params . leadDestinationId )
869- : undefined ,
870- list_id :
871- params . operation === 'delete_leads' && params . deleteSource === 'list'
872- ? optionalIdParam ( params . deleteSourceId )
873- : params . leadDestination === 'list'
874- ? optionalIdParam ( params . leadDestinationId )
875- : optionalIdParam ( params . listId ) ,
876- campaign_id :
877- params . operation === 'delete_leads'
878- ? params . deleteSource === 'campaign'
879- ? optionalIdParam ( params . deleteSourceId )
880- : undefined
881- : optionalIdParam ( params . campaignId ) ,
864+ campaign : mapCampaignParam ( params ) ,
865+ list_id : mapListIdParam ( params ) ,
866+ campaign_id : mapCampaignIdParam ( params ) ,
882867 leadId : params . leadId ,
883868 email : emptyToUndefined ( params . email ) ,
884869 first_name : emptyToUndefined ( params . firstName ) ,
@@ -899,10 +884,7 @@ export const InstantlyBlock: BlockConfig<InstantlyResponse> = {
899884 verify_leads_for_lead_finder : toBooleanParam ( params . verifyLeadsForLeadFinder ) ,
900885 verify_leads_on_import : toBooleanParam ( params . verifyLeadsOnImport ) ,
901886 filter : emptyToUndefined ( params . leadFilter ) ,
902- ids :
903- params . operation === 'delete_leads'
904- ? parseStringList ( params . deleteLeadIds )
905- : parseStringList ( params . leadIds ) ,
887+ ids : mapIdsParam ( params ) ,
906888 excluded_ids : parseStringList ( params . excludedLeadIds ) ,
907889 contacts : parseStringList ( params . contacts ) ,
908890 organization_user_ids : parseStringList ( params . organizationUserIds ) ,
@@ -913,26 +895,17 @@ export const InstantlyBlock: BlockConfig<InstantlyResponse> = {
913895 esg_code : emptyToUndefined ( params . esgCode ) ,
914896 in_campaign : toBooleanParam ( params . inCampaign ) ,
915897 in_list : toBooleanParam ( params . inList ) ,
916- status :
917- params . operation === 'delete_leads'
918- ? toNumberParam ( params . deleteStatus )
919- : toNumberParam ( params . campaignStatus ) ,
920- limit :
921- params . operation === 'delete_leads'
922- ? toNumberParam ( params . deleteLimit )
923- : toNumberParam ( params . limit ) ,
924- starting_after : emptyToUndefined ( params . startingAfter ) ,
898+ status : mapStatusParam ( params ) ,
899+ limit : mapLimitParam ( params ) ,
900+ starting_after : mapStartingAfterParam ( params ) ,
925901 lead_email : emptyToUndefined ( params . leadEmail ) ,
926902 interest_value :
927903 params . operation === 'update_lead_interest_status'
928904 ? toNullableNumberParam ( params . interestValue , true )
929905 : undefined ,
930906 ai_interest_value : toNumberParam ( params . aiInterestValue ) ,
931907 disable_auto_interest : toBooleanParam ( params . disableAutoInterest ) ,
932- name :
933- params . operation === 'create_lead_list'
934- ? emptyToUndefined ( params . leadListName )
935- : emptyToUndefined ( params . campaignName ) ,
908+ name : mapNameParam ( params ) ,
936909 campaign_schedule : parseJsonObject ( params . campaignSchedule ) ,
937910 sequences : parseJsonArray ( params . sequences ) ,
938911 email_list : parseStringList ( params . emailList ) ,
@@ -946,10 +919,7 @@ export const InstantlyBlock: BlockConfig<InstantlyResponse> = {
946919 text_only : toBooleanParam ( params . textOnly ) ,
947920 tag_ids : emptyToUndefined ( params . tagIds ) ,
948921 ai_sales_agent_id : optionalIdParam ( params . aiSalesAgentId ) ,
949- search :
950- params . operation === 'list_emails'
951- ? emptyToUndefined ( params . emailSearch )
952- : emptyToUndefined ( params . search ) ,
922+ search : mapSearchParam ( params ) ,
953923 eaccount : emptyToUndefined ( params . emailAccount ) ,
954924 i_status : toNumberParam ( params . emailStatus ) ,
955925 lead : emptyToUndefined ( params . emailLead ) ,
@@ -1190,6 +1160,94 @@ function emptyToUndefined(value: unknown): unknown {
11901160 return trimmed === '' || trimmed === '-' ? undefined : trimmed
11911161}
11921162
1163+ function mapCampaignParam ( params : Record < string , unknown > ) : string | undefined {
1164+ if ( params . operation === 'list_leads' ) return optionalIdParam ( params . campaignId )
1165+ if ( params . operation !== 'create_lead' || params . leadDestination !== 'campaign' ) return undefined
1166+ return optionalIdParam ( params . leadDestinationId )
1167+ }
1168+
1169+ function mapListIdParam ( params : Record < string , unknown > ) : string | undefined {
1170+ switch ( params . operation ) {
1171+ case 'delete_leads' :
1172+ return params . deleteSource === 'list' ? optionalIdParam ( params . deleteSourceId ) : undefined
1173+ case 'create_lead' :
1174+ return params . leadDestination === 'list'
1175+ ? optionalIdParam ( params . leadDestinationId )
1176+ : undefined
1177+ case 'list_leads' :
1178+ case 'update_lead_interest_status' :
1179+ case 'list_emails' :
1180+ return optionalIdParam ( params . listId )
1181+ default :
1182+ return undefined
1183+ }
1184+ }
1185+
1186+ function mapCampaignIdParam ( params : Record < string , unknown > ) : string | undefined {
1187+ if ( params . operation === 'delete_leads' ) {
1188+ return params . deleteSource === 'campaign' ? optionalIdParam ( params . deleteSourceId ) : undefined
1189+ }
1190+
1191+ if ( params . operation === 'update_lead_interest_status' || params . operation === 'list_emails' ) {
1192+ return optionalIdParam ( params . campaignId )
1193+ }
1194+
1195+ return undefined
1196+ }
1197+
1198+ function mapIdsParam ( params : Record < string , unknown > ) : string [ ] | undefined {
1199+ if ( params . operation === 'delete_leads' ) return parseStringList ( params . deleteLeadIds )
1200+ if ( params . operation === 'list_leads' ) return parseStringList ( params . leadIds )
1201+ return undefined
1202+ }
1203+
1204+ function mapStatusParam ( params : Record < string , unknown > ) : number | undefined {
1205+ if ( params . operation === 'delete_leads' ) return toNumberParam ( params . deleteStatus )
1206+ if ( params . operation === 'list_campaigns' ) return toNumberParam ( params . campaignStatus )
1207+ return undefined
1208+ }
1209+
1210+ function mapLimitParam ( params : Record < string , unknown > ) : number | undefined {
1211+ if ( params . operation === 'delete_leads' ) return toNumberParam ( params . deleteLimit )
1212+ if ( isPaginatedOperation ( params . operation ) ) return toNumberParam ( params . limit )
1213+ return undefined
1214+ }
1215+
1216+ function mapStartingAfterParam ( params : Record < string , unknown > ) : unknown {
1217+ return isPaginatedOperation ( params . operation ) ? emptyToUndefined ( params . startingAfter ) : undefined
1218+ }
1219+
1220+ function mapNameParam ( params : Record < string , unknown > ) : unknown {
1221+ switch ( params . operation ) {
1222+ case 'create_lead_list' :
1223+ return emptyToUndefined ( params . leadListName )
1224+ case 'create_campaign' :
1225+ case 'patch_campaign' :
1226+ return emptyToUndefined ( params . campaignName )
1227+ default :
1228+ return undefined
1229+ }
1230+ }
1231+
1232+ function mapSearchParam ( params : Record < string , unknown > ) : unknown {
1233+ if ( params . operation === 'list_emails' ) return emptyToUndefined ( params . emailSearch )
1234+ if ( isSearchOperation ( params . operation ) ) return emptyToUndefined ( params . search )
1235+ return undefined
1236+ }
1237+
1238+ function isPaginatedOperation ( value : unknown ) : boolean {
1239+ return (
1240+ value === 'list_leads' ||
1241+ value === 'list_campaigns' ||
1242+ value === 'list_emails' ||
1243+ value === 'list_lead_lists'
1244+ )
1245+ }
1246+
1247+ function isSearchOperation ( value : unknown ) : boolean {
1248+ return value === 'list_leads' || value === 'list_campaigns' || value === 'list_lead_lists'
1249+ }
1250+
11931251function optionalIdParam ( value : unknown ) : string | undefined {
11941252 if ( typeof value !== 'string' ) return undefined
11951253 const trimmed = value . trim ( )
0 commit comments