actions/create-card/create-card.mjs
import pipefy from "../../pipefy.app.mjs"; export default { key: "pipefy-create-card", name: "Create Card", description: "Create a new Card in a Pipe. [See the docs here](https://api-docs.pipefy.com/reference/mutations/createCard/)", version: "0.1.3", annotations: { destructiveHint: false, openWorldHint: true, readOnlyHint: false, }, type: "action", props: { pipefy, organization: { propDefinition: [ pipefy, "organization", ], }, pipe: { propDefinition: [ pipefy, "pipe", (c) => ({ orgId: c.organization, }), ], reloadProps: true, }, phase: { propDefinition: [ pipefy, "phase", (c) => ({ pipeId: c.pipe, }), ], reloadProps: true, }, title: { type: "string", label: "Title", description: "Title of the new card", }, }, async additionalProps() { const props = {}; const startFields = this.pipe ? await this.pipefy.listPipeFields(this.pipe) : []; const fields = this.phase ? await this.pipefy.listPhaseFields(this.phase) : []; const allFields = [ ...startFields, ...fields, ]; for (const field of allFields) { props[field.id] = { type: "string", label: field.label, description: `Type: ${field.type}. ${field.description}`, optional: !field.required, }; if (field.options.length > 0) { props[field.id].options = field.options; } } return props; }, async run({ $ }) { const fieldsAttributes = []; const startFields = await this.pipefy.listPipeFields(this.pipe); const fields = await this.pipefy.listPhaseFields(this.phase); const allFields = [ ...startFields, ...fields, ]; for (const field of allFields) { if (this[field.id]) { fieldsAttributes.push({ field_id: field.id, field_value: this[field.id], }); } } const variables = { pipeId: this.pipe, phaseId: this.phase, title: this.title, fieldsAttributes, }; const response = await this.pipefy.createCard(variables); $.export("$summary", "Successfully created card"); return response; }, };