import app from "../../cloze.app.mjs";
import utils from "../../common/utils.mjs";
export default {
key: "cloze-create-update-project",
name: "Create Or Update Project",
description: "Create a new project or merge updates into an existing one. [See the documentation](https://api.cloze.com/api-docs/#!/Relations_-_Projects/post_v1_projects_create).",
version: "0.0.1",
type: "action",
props: {
app,
name: {
type: "string",
label: "Project Name",
description: "The name of the project.",
},
appLinks: {
type: "string[]",
label: "App Links",
description: "The app links of the project. Each app link should be a JSON object with at least `source` and `uniqueid` keys. [See the documentation](https://api.cloze.com/api-docs/#!/Relations_-_Projects/post_v1_projects_create).",
optional: true,
default: [
JSON.stringify({
source: "na16.salesforce.com",
uniqueid: "sdf234v",
}),
],
},
summary: {
type: "string",
label: "Project Summary",
description: "The summary of the project.",
optional: true,
},
stage: {
type: "string",
label: "Stage",
description: "The stage of the project.",
optional: true,
options: [
{
label: "Potential Stage",
value: "future",
},
{
label: "Active Stage",
value: "current",
},
{
label: "Won or Done stage",
value: "won",
},
{
label: "Lost Stage",
value: "lost",
},
],
},
segment: {
type: "string",
label: "Segment",
description: "The segment of the project.",
optional: true,
options: [
"project",
"project1",
"project2",
"project3",
"project4",
"project5",
],
},
additionalData: {
type: "object",
label: "Additional Data",
description: "Additional details for the project in JSON format. [See the documentation](https://api.cloze.com/api-docs/#!/Relations_-_Projects/post_v1_projects_create).",
optional: true,
},
},
methods: {
createProject(args = {}) {
return this.app.post({
path: "/projects/create",
...args,
});
},
},
async run({ $ }) {
const {
createProject,
name,
appLinks,
summary,
stage,
segment,
additionalData,
} = this;
const response = await createProject({
$,
data: {
name,
appLinks: utils.parseArray(appLinks),
summary,
stage,
segment,
...additionalData,
},
});
$.export("$summary", "Successfully created/updated project.");
return response;
},
};