Files
automatisch/packages/backend/src/apps/todoist/actions/create-task/index.ts
2023-06-01 15:01:12 +02:00

94 lines
2.2 KiB
TypeScript

import defineAction from '../../../../helpers/define-action';
export default defineAction({
name: 'Create task',
key: 'createTask',
description: 'Creates a Task in Todoist',
arguments: [
{
label: 'Project ID',
key: 'projectId',
type: 'dropdown' as const,
required: false,
variables: false,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listProjects',
},
],
},
},
{
label: 'Section ID',
key: 'sectionId',
type: 'dropdown' as const,
required: false,
variables: false,
dependsOn: ['parameters.projectId'],
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listSections',
},
{
name: 'parameters.projectId',
value: '{parameters.projectId}',
},
],
},
},
{
label: 'Labels',
key: 'labels',
type: 'string' as const,
required: false,
variables: true,
description:
'Labels to add to task (comma separated). Examples: "work" "work,imported"',
},
{
label: 'Content',
key: 'content',
type: 'string' as const,
required: true,
variables: true,
description: 'Task content, may be markdown. Example: "Foo"',
},
{
label: 'Description',
key: 'description',
type: 'string' as const,
required: false,
variables: true,
description: 'Task description, may be markdown. Example: "Foo"',
},
],
async run($) {
const requestPath = `/tasks`;
const { projectId, sectionId, labels, content, description } =
$.step.parameters;
const labelsArray = (labels as string).split(',');
const payload = {
content,
description: description || null,
project_id: projectId || null,
labels: labelsArray || null,
section_id: sectionId || null,
};
const response = await $.http.post(requestPath, payload);
$.setActionItem({ raw: response.data });
},
});