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.2",
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;
},
};