n8n/packages/nodes-base/nodes/SendInBlue/EmailDescription.ts
2022-09-12 09:25:39 +02:00

452 lines
8.5 KiB
TypeScript

import { IExecuteSingleFunctions, IHttpRequestOptions, INodeProperties } from 'n8n-workflow';
import { SendInBlueNode } from './GenericFunctions';
export const emailOperations: INodeProperties[] = [
{
displayName: 'Operation',
name: 'operation',
type: 'options',
noDataExpression: true,
displayOptions: {
show: {
resource: ['email'],
},
},
options: [
{
name: 'Send',
value: 'send',
action: 'Send a transactional email',
},
{
name: 'Send Template',
value: 'sendTemplate',
action: 'Send an email with an existing Template',
},
],
routing: {
request: {
method: 'POST',
url: '/v3/smtp/email',
},
},
default: 'send',
},
];
const sendHtmlEmailFields: INodeProperties[] = [
{
displayName: 'Send HTML',
name: 'sendHTML',
type: 'boolean',
displayOptions: {
show: {
resource: ['email'],
operation: ['send'],
},
},
default: false,
},
{
displayName: 'Subject',
name: 'subject',
type: 'string',
displayOptions: {
show: {
resource: ['email'],
operation: ['send'],
},
},
routing: {
send: {
property: 'subject',
type: 'body',
},
},
default: '',
description: 'Subject of the email',
},
{
displayName: 'Text Content',
name: 'textContent',
type: 'string',
displayOptions: {
show: {
resource: ['email'],
operation: ['send'],
sendHTML: [false],
},
},
routing: {
send: {
property: 'textContent',
type: 'body',
},
},
default: '',
description: 'Text content of the message',
},
{
displayName: 'HTML Content',
name: 'htmlContent',
type: 'string',
displayOptions: {
show: {
resource: ['email'],
operation: ['send'],
sendHTML: [true],
},
},
routing: {
send: {
property: 'htmlContent',
type: 'body',
},
},
default: '',
description: 'HTML content of the message',
},
{
displayName: 'Sender',
name: 'sender',
type: 'string',
displayOptions: {
show: {
resource: ['email'],
operation: ['send'],
},
},
default: '',
required: true,
routing: {
send: {
preSend: [SendInBlueNode.Validators.validateAndCompileSenderEmail],
},
},
},
{
displayName: 'Receipients',
name: 'receipients',
type: 'string',
displayOptions: {
show: {
resource: ['email'],
operation: ['send'],
},
},
default: '',
required: true,
routing: {
send: {
preSend: [SendInBlueNode.Validators.validateAndCompileReceipientEmails],
},
},
},
{
displayName: 'Additional Fields',
name: 'additionalFields',
placeholder: 'Add Field',
description: 'Additional fields to add',
type: 'collection',
default: {},
displayOptions: {
show: {
resource: ['email'],
operation: ['send'],
},
},
options: [
{
displayName: 'Attachments',
name: 'emailAttachments',
placeholder: 'Add Attachment',
type: 'fixedCollection',
default: {},
options: [
{
name: 'attachment',
displayName: 'Attachment Data',
values: [
{
displayName: 'Input Data Field Name',
default: '',
name: 'binaryPropertyName',
type: 'string',
description:
'The name of the incoming field containing the binary file data to be processed',
},
],
},
],
routing: {
send: {
preSend: [SendInBlueNode.Validators.validateAndCompileAttachmentsData],
},
},
},
{
displayName: 'Receipients BCC',
name: 'receipientsBCC',
placeholder: 'Add BCC',
type: 'fixedCollection',
default: {},
options: [
{
name: 'receipientBcc',
displayName: 'Receipient',
values: [
{
displayName: 'Receipient',
name: 'bcc',
type: 'string',
default: '',
},
],
},
],
routing: {
send: {
preSend: [SendInBlueNode.Validators.validateAndCompileBCCEmails],
},
},
},
{
displayName: 'Receipients CC',
name: 'receipientsCC',
placeholder: 'Add CC',
type: 'fixedCollection',
default: {},
options: [
{
name: 'receipientCc',
displayName: 'Receipient',
values: [
{
displayName: 'Receipient',
name: 'cc',
type: 'string',
default: '',
},
],
},
],
routing: {
send: {
preSend: [SendInBlueNode.Validators.validateAndCompileCCEmails],
},
},
},
{
displayName: 'Email Tags',
name: 'emailTags',
default: {},
description: 'Add tags to your emails to find them more easily',
placeholder: 'Add Email Tags',
type: 'fixedCollection',
options: [
{
displayName: 'Tags',
name: 'tags',
values: [
{
displayName: 'Tag',
default: '',
name: 'tag',
type: 'string',
},
],
},
],
routing: {
send: {
preSend: [SendInBlueNode.Validators.validateAndCompileTags],
},
},
},
],
},
];
const sendHtmlTemplateEmailFields: INodeProperties[] = [
{
displayName: 'Template ID',
name: 'templateId',
type: 'options',
default: '',
typeOptions: {
loadOptions: {
routing: {
request: {
method: 'GET',
url: '/v3/smtp/templates',
qs: {
templateStatus: true,
limit: 1000,
offset: 0,
sort: 'desc',
},
},
output: {
postReceive: [
{
type: 'rootProperty',
properties: {
property: 'templates',
},
},
{
type: 'setKeyValue',
properties: {
name: '={{$responseItem.name}}',
value: '={{$responseItem.id}}',
},
},
{
type: 'sort',
properties: {
key: 'name',
},
},
],
},
},
},
},
displayOptions: {
show: {
resource: ['email'],
operation: ['sendTemplate'],
},
},
routing: {
send: {
type: 'body',
property: 'templateId',
},
},
},
{
displayName: 'Receipients',
name: 'receipients',
type: 'string',
displayOptions: {
show: {
resource: ['email'],
operation: ['sendTemplate'],
},
},
default: '',
required: true,
routing: {
send: {
preSend: [SendInBlueNode.Validators.validateAndCompileReceipientEmails],
},
},
},
{
displayName: 'Additional Fields',
name: 'additionalFields',
type: 'collection',
description: 'Additional fields to add',
placeholder: 'Add Field',
default: {},
displayOptions: {
show: {
resource: ['email'],
operation: ['sendTemplate'],
},
},
options: [
{
displayName: 'Attachments',
name: 'emailAttachments',
placeholder: 'Add Attachment',
type: 'fixedCollection',
default: {},
options: [
{
displayName: 'Attachment Data',
name: 'attachment',
values: [
{
displayName: 'Input Data Field Name',
name: 'binaryPropertyName',
default: '',
type: 'string',
description:
'The name of the incoming field containing the binary file data to be processed',
},
],
},
],
routing: {
send: {
preSend: [SendInBlueNode.Validators.validateAndCompileAttachmentsData],
},
},
},
{
displayName: 'Email Tags',
name: 'emailTags',
default: {},
description: 'Add tags to your emails to find them more easily',
placeholder: 'Add Email Tags',
type: 'fixedCollection',
options: [
{
displayName: 'Tags',
name: 'tags',
values: [
{
displayName: 'Tag',
default: '',
name: 'tag',
type: 'string',
},
],
},
],
routing: {
send: {
preSend: [SendInBlueNode.Validators.validateAndCompileTags],
},
},
},
{
displayName: 'Template Parameters',
name: 'templateParameters',
default: {},
description: 'Pass a set of attributes to customize the template',
placeholder: 'Add Parameter',
type: 'fixedCollection',
options: [
{
name: 'parameterValues',
displayName: 'Parameters',
values: [
{
displayName: 'Parameter',
name: 'parmeters',
type: 'string',
default: '',
placeholder: 'key=value',
description: 'Comma-separated key=value pairs',
},
],
},
],
routing: {
send: {
preSend: [SendInBlueNode.Validators.validateAndCompileTemplateParameters],
},
},
},
],
},
];
export const emailFields: INodeProperties[] = [
...sendHtmlEmailFields,
...sendHtmlTemplateEmailFields,
];