import whatconverts from "../../whatconverts.app.mjs";
export default {
key: "whatconverts-find-lead",
name: "Find Lead",
description: "Find a lead in WhatConverts. [See the documentation](https://www.whatconverts.com/api/leads/#get-all-leads)",
version: "0.0.1",
type: "action",
props: {
whatconverts,
accountId: {
propDefinition: [
whatconverts,
"accountId",
],
},
profileId: {
propDefinition: [
whatconverts,
"profileId",
(c) => ({
accountId: c.accountId,
}),
],
},
leadType: {
propDefinition: [
whatconverts,
"leadType",
],
},
leadStatus: {
type: "string",
label: "Lead Status",
description: "Lead status to return for this request",
options: [
"repeat",
"unique",
],
optional: true,
},
startDate: {
type: "string",
label: "Start Date",
description: "Start date for this request in date or date/time ISO 8601 format (UTC); `2015-11-10` or `2015-11-10T00:00:00Z`. Date range can include up to 400 days.",
optional: true,
},
endDate: {
type: "string",
label: "End Date",
description: "End date for this request in date or date/time ISO 8601 format (UTC); `2015-11-10` or `2015-11-10T00:00:00Z`. Date range can include up to 400 days.",
optional: true,
},
order: {
type: "string",
label: "Order",
description: "Order in which to return the leads by date created",
options: [
"asc",
"desc",
],
optional: true,
},
quotable: {
type: "string",
label: "Quotable",
description: "Quotable type to return for this request",
options: [
"yes",
"no",
"pending",
"not_set",
],
optional: true,
},
quoteValue: {
type: "string",
label: "Quote Value",
description: "Return leads that have a quote value",
options: [
"has_value",
"no_value",
],
optional: true,
},
salesValue: {
type: "string",
label: "Sales Value",
description: "Return leads that have a sales value",
options: [
"has_value",
"no_value",
],
optional: true,
},
phoneNumber: {
type: "string",
label: "Phone Number",
description: "Return leads for the contacts that have this E.164 formatted phone number",
optional: true,
},
emailAddress: {
type: "string",
label: "Email Address",
description: "Return leads for the contact that have this email address",
optional: true,
},
spam: {
type: "boolean",
label: "Spam",
description: "If `true` will return only spam leads",
optional: true,
},
duplicate: {
type: "boolean",
label: "Duplicate",
description: "If true will return only duplicate leads",
optional: true,
},
leadSource: {
type: "string",
label: "Lead Source",
description: "Return leads that have this lead source",
optional: true,
},
leadMedium: {
type: "string",
label: "Lead Medium",
description: "Return leads that have this lead medium",
optional: true,
},
leadCampaign: {
type: "string",
label: "Lead Campaign",
description: "Return leads that have this lead campaign",
optional: true,
},
leadContent: {
type: "string",
label: "Lead Content",
description: "Return leads that have this lead content",
optional: true,
},
leadKeyword: {
type: "string",
label: "Lead Keyword",
description: "Return leads that have this lead keyword",
optional: true,
},
maxResults: {
type: "integer",
label: "Max Results",
description: "The maximum number of results to return. Default: 100, Maximum: 2500",
optional: true,
default: 100,
},
},
async run({ $ }) {
const { leads } = await this.whatconverts.listLeads({
$,
params: {
profile_id: this.profileId,
lead_type: this.leadType,
lead_status: this.leadStatus,
start_date: this.startDate,
end_date: this.endDate,
order: this.order,
quotable: this.quotable,
quote_value: this.quoteValue,
sales_value: this.salesValue,
phone_number: this.phoneNumber,
email_address: this.emailAddress,
spam: this.spam,
duplicate: this.duplicate,
lead_source: this.leadSource,
lead_medium: this.leadMedium,
lead_campaign: this.leadCampaign,
lead_content: this.leadContent,
lead_keyword: this.leadKeyword,
leads_per_page: this.maxResults,
},
});
$.export("$summary", `Found ${leads.length} lead${leads.length === 1
? ""
: "s"}`);
return leads;
},
};