actions/create-deal/create-deal.mjs
import activecampaign from "../../activecampaign.app.mjs"; export default { key: "activecampaign-create-deal", name: "Create Deal", description: "Creates a new deal. See the docs [here](https://developers.activecampaign.com/reference/create-a-deal-new).", version: "0.2.2", annotations: { destructiveHint: false, openWorldHint: true, readOnlyHint: false, }, type: "action", props: { activecampaign, title: { type: "string", label: "Title", description: "Deal's title.", }, value: { type: "integer", label: "Value", description: "Deal's value in cents. (i.e. $456.78 => 45678). Must be greater than or equal to zero.", }, currency: { type: "string", label: "Currency", description: "Deal's currency in 3-digit ISO format, lowercased.", }, group: { type: "string", label: "Group", description: "Deal's pipeline id. Required if `deal.stage` is not provided. If `deal.group` is not provided, the stage's pipeline will be assigned to the deal automatically.", optional: true, }, stage: { type: "string", label: "Stage", description: "Deal's stage id. Required if `deal.group` is not provided. If `deal.stage` is not provided, the deal will be assigned with the first stage in the pipeline provided in `deal.group`.", optional: true, }, owner: { type: "string", label: "Owner", description: "Deal's owner id. Required if pipeline's auto-assign option is disabled.", }, description: { type: "string", label: "Description", description: "Deal's description.", optional: true, }, account: { type: "string", label: "Account", description: "Deal's account id.", optional: true, }, contact: { type: "string", label: "Contact", description: "Deal's primary contact's id.", optional: true, }, percent: { type: "integer", label: "Percent", description: "Deal's percentage.", optional: true, }, status: { propDefinition: [ activecampaign, "status", ], }, fields: { propDefinition: [ activecampaign, "fields", ], }, }, async run({ $ }) { const { title, value, currency, group, stage, owner, description, account, contact, percent, status, fields, } = this; let parsedFields; try { parsedFields = fields?.map(JSON.parse); } catch (error) { throw new Error("Syntax error in `Fields` property"); } const response = await this.activecampaign.createDeal({ data: { deal: { title, description, account, contact, value, currency, group, stage, owner, percent, status, fields: parsedFields, }, }, }); $.export("$summary", `Successfully created a deal with ID ${response.deal.id}`); return response; }, };