actions/create-candidate/create-candidate.mjs
import app from "../../recruit_crm.app.mjs"; import constants from "../../common/constants.mjs"; export default { key: "recruit_crm-create-candidate", name: "Create Candidate", description: "Creates a new candidate. [See the documentation](https://docs.recruitcrm.io/docs/rcrm-api-reference/ba451e2a3bd63-creates-a-new-candidate)", type: "action", version: "0.0.2", annotations: { destructiveHint: false, openWorldHint: true, readOnlyHint: false, }, props: { app, firstName: { type: "string", label: "First Name", description: "The first name of the candidate", }, lastName: { type: "string", label: "Last Name", description: "The last name of the candidate", optional: true, }, email: { type: "string", label: "Email", description: "The email of the candidate", optional: true, }, contactNumber: { label: "Contact Number", description: "The contact number of the candidate", propDefinition: [ app, "contactId", () => ({ mapper: ({ contact_number: value, first_name: label, }) => ({ label, value, }), }), ], }, avatar: { type: "string", label: "Avatar", description: "The avatar URL of the candidate", optional: true, }, genderId: { type: "integer", label: "Gender ID", description: "Gender ID of the candidate", optional: true, options: Object.values(constants.GENDER), }, specialization: { type: "string", label: "Specialization", description: "Candidate's Sepcialisation. Example: `Computer Science`", optional: true, }, }, methods: { createCandidate(args = {}) { return this.app.post({ path: "/candidates", ...args, }); }, }, async run({ $: step }) { const { app, createCandidate, ...data } = this; const response = await createCandidate({ step, data, }); step.export("$summary", `Successfully created candidate with ID \`${response.id}\``); return response; }, };