From 9cfaa9e6037e0e4567fb541ffe9fdf8fc9c57912 Mon Sep 17 00:00:00 2001 From: Faruk AYDIN Date: Tue, 7 Feb 2023 16:30:47 +0100 Subject: [PATCH] feat(salesforce): Implement create attachment integration --- .../actions/create-attachment/index.ts | 52 +++++++++++++++++++ .../salesforce/actions/find-record/index.ts | 5 +- .../src/apps/salesforce/actions/index.ts | 3 +- .../docs/pages/apps/salesforce/actions.md | 4 +- 4 files changed, 59 insertions(+), 5 deletions(-) create mode 100644 packages/backend/src/apps/salesforce/actions/create-attachment/index.ts diff --git a/packages/backend/src/apps/salesforce/actions/create-attachment/index.ts b/packages/backend/src/apps/salesforce/actions/create-attachment/index.ts new file mode 100644 index 00000000..8c266e8e --- /dev/null +++ b/packages/backend/src/apps/salesforce/actions/create-attachment/index.ts @@ -0,0 +1,52 @@ +import defineAction from '../../../../helpers/define-action'; + +export default defineAction({ + name: 'Create attachment', + key: 'createAttachment', + description: + 'Creates an attachment of a specified object by given parent ID.', + arguments: [ + { + label: 'Parent ID', + key: 'parentId', + type: 'string' as const, + required: true, + variables: true, + description: + 'ID of the parent object of the attachment. The following objects are supported as parents of attachments: Account, Asset, Campaign, Case, Contact, Contract, Custom objects, EmailMessage, EmailTemplate, Event, Lead, Opportunity, Product2, Solution, Task', + }, + { + label: 'Name', + key: 'name', + type: 'string' as const, + required: true, + variables: true, + description: 'Name of the attached file. Maximum size is 255 characters.', + }, + { + label: 'Body', + key: 'body', + type: 'string' as const, + required: true, + variables: true, + description: 'File data. (Max size is 25MB)', + }, + ], + + async run($) { + const { parentId, name, body } = $.step.parameters; + + const options = { + ParentId: parentId, + Name: name, + Body: body, + }; + + const { data } = await $.http.post( + '/services/data/v56.0/sobjects/Attachment/', + options + ); + + $.setActionItem({ raw: data }); + }, +}); diff --git a/packages/backend/src/apps/salesforce/actions/find-record/index.ts b/packages/backend/src/apps/salesforce/actions/find-record/index.ts index 3e8099b1..6daa21a9 100644 --- a/packages/backend/src/apps/salesforce/actions/find-record/index.ts +++ b/packages/backend/src/apps/salesforce/actions/find-record/index.ts @@ -1,10 +1,9 @@ import defineAction from '../../../../helpers/define-action'; export default defineAction({ - name: 'Find Record', + name: 'Find record', key: 'findRecord', - description: - 'Finds a record of a specified object by a field and value.', + description: 'Finds a record of a specified object by a field and value.', arguments: [ { label: 'Object', diff --git a/packages/backend/src/apps/salesforce/actions/index.ts b/packages/backend/src/apps/salesforce/actions/index.ts index aa8fce74..dd8a7ab1 100644 --- a/packages/backend/src/apps/salesforce/actions/index.ts +++ b/packages/backend/src/apps/salesforce/actions/index.ts @@ -1,3 +1,4 @@ import findRecord from './find-record'; +import createAttachment from './create-attachment'; -export default [findRecord]; +export default [findRecord, createAttachment]; diff --git a/packages/docs/pages/apps/salesforce/actions.md b/packages/docs/pages/apps/salesforce/actions.md index 2f6ae37a..58ebeca5 100644 --- a/packages/docs/pages/apps/salesforce/actions.md +++ b/packages/docs/pages/apps/salesforce/actions.md @@ -1,7 +1,9 @@ --- favicon: /favicons/salesforce.svg items: - - name: Find Record + - name: Create attachment + desc: Creates an attachment of a specified object by given parent ID. + - name: Find record desc: Finds a record of a specified object by a field and value. ---