import rex from "../../rex.app.mjs";
import constants from "../../common/constants.mjs";
export default {
key: "rex-create-contact",
name: "Create Contact",
description: "Creates a new contact in Rex. [See the documentation](https://api-docs.rexsoftware.com/service/contacts#operation/create)",
version: "0.0.1",
type: "action",
props: {
rex,
type: {
type: "string",
label: "Type",
description: "Whether contact is person or company",
options: constants.CONTACT_TYPE_OPTIONS,
},
firstName: {
type: "string",
label: "First Name",
description: "Contact's first name",
},
lastName: {
type: "string",
label: "Last Name",
description: "Contact's last name",
},
email: {
type: "string",
label: "Email",
description: "Contact's email address",
optional: true,
},
phone: {
type: "string",
label: "Phone",
description: "Contact's phone number",
optional: true,
},
address: {
type: "string",
label: "Address",
description: "Contact's address",
optional: true,
},
addressPostal: {
type: "string",
label: "Address Postal",
description: "Contact's postal address",
optional: true,
},
companyName: {
type: "string",
label: "Company Name",
description: "Company name - company contact only",
optional: true,
},
websiteUrl: {
type: "string",
label: "Website URL",
description: "Company website URL - company contact only",
optional: true,
},
isDnd: {
type: "boolean",
label: "Is DND?",
description: "Whether contact can be contacted for marketing purposes",
optional: true,
},
nameLegal: {
type: "string",
label: "Name Legal",
description: "Contact's legal name",
optional: true,
},
nameSalutation: {
type: "string",
label: "Name Salutation",
description: "Contact's name as salutation",
optional: true,
},
nameAddressee: {
type: "string",
label: "Name Address",
description: "Contact's name as addressee",
optional: true,
},
},
async run({ $ }) {
const data = {
address: this.address,
address_postal: this.addressPostal,
company_name: this.companyName,
website_url: this.websiteUrl,
is_dnd: this.isDnd,
type: this.type,
name_legal: this.nameLegal,
name_salutation: this.nameSalutation,
name_addressee: this.nameAddressee,
related: {
contact_names: [
{
name_first: this.firstName,
name_last: this.lastName,
},
],
contact_emails: this.email
? [
{
email_address: this.email,
},
]
: undefined,
contact_phones: this.phone
? [
{
phone_number: this.phone,
},
]
: undefined,
},
};
const { result } = await this.rex.createContact({
data: {
data,
},
$,
});
if (result?.id) {
$.export("$summary", `Successfully created contact with ID ${result.id}.`);
}
return result;
},
};