UNPKG

n8n-nodes-base

Version:

Base nodes of n8n

1,263 lines 88.8 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Mailchimp = void 0; const moment_timezone_1 = __importDefault(require("moment-timezone")); const n8n_workflow_1 = require("n8n-workflow"); const GenericFunctions_1 = require("./GenericFunctions"); const Statuses = { subscribe: 'subscribe', unsubscribed: 'unsubscribe', cleaned: 'cleaned', pending: 'pending', transactional: 'transactional', }; class Mailchimp { description = { displayName: 'Mailchimp', name: 'mailchimp', icon: { light: 'file:mailchimp.svg', dark: 'file:mailchimp.dark.svg' }, group: ['output'], version: 1, subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}', description: 'Consume Mailchimp API', defaults: { name: 'Mailchimp', }, usableAsTool: true, inputs: [n8n_workflow_1.NodeConnectionTypes.Main], outputs: [n8n_workflow_1.NodeConnectionTypes.Main], credentials: [ { name: 'mailchimpApi', required: true, displayOptions: { show: { authentication: ['apiKey'], }, }, }, { name: 'mailchimpOAuth2Api', required: true, displayOptions: { show: { authentication: ['oAuth2'], }, }, }, ], properties: [ { displayName: 'Authentication', name: 'authentication', type: 'options', options: [ { name: 'API Key', value: 'apiKey', }, { name: 'OAuth2', value: 'oAuth2', }, ], default: 'apiKey', }, { displayName: 'Resource', name: 'resource', type: 'options', noDataExpression: true, options: [ { name: 'Campaign', value: 'campaign', }, { name: 'List Group', value: 'listGroup', }, { name: 'Member', value: 'member', }, { name: 'Member Tag', value: 'memberTag', }, ], default: 'member', required: true, }, { displayName: 'Operation', name: 'operation', type: 'options', noDataExpression: true, required: true, displayOptions: { show: { resource: ['member'], }, }, options: [ { name: 'Create', value: 'create', description: 'Create a new member on list', action: 'Create a member', }, { name: 'Delete', value: 'delete', description: 'Delete a member on list', action: 'Delete a member', }, { name: 'Get', value: 'get', description: 'Get a member on list', action: 'Get a member', }, { name: 'Get Many', value: 'getAll', description: 'Get many members on a list', action: 'Get many members', }, { name: 'Update', value: 'update', description: 'Update a new member on list', action: 'Update a member', }, ], default: 'create', }, { displayName: 'Operation', name: 'operation', type: 'options', noDataExpression: true, required: true, displayOptions: { show: { resource: ['memberTag'], }, }, options: [ { name: 'Create', value: 'create', description: 'Add tags from a list member', action: 'Create a member tag', }, { name: 'Delete', value: 'delete', description: 'Remove tags from a list member', action: 'Delete a member tag', }, ], default: 'create', }, { displayName: 'Operation', name: 'operation', type: 'options', noDataExpression: true, required: true, displayOptions: { show: { resource: ['listGroup'], }, }, options: [ { name: 'Get Many', value: 'getAll', description: 'Get many groups', action: 'Get many list groups', }, ], default: 'getAll', }, { displayName: 'Operation', name: 'operation', type: 'options', noDataExpression: true, required: true, displayOptions: { show: { resource: ['campaign'], }, }, options: [ { name: 'Delete', value: 'delete', description: 'Delete a campaign', action: 'Delete a campaign', }, { name: 'Get', value: 'get', description: 'Get a campaign', action: 'Get a campaign', }, { name: 'Get Many', value: 'getAll', description: 'Get many campaigns', action: 'Get many campaigns', }, { name: 'Replicate', value: 'replicate', description: 'Replicate a campaign', action: 'Replicate a campaign', }, { name: 'Resend', value: 'resend', description: 'Creates a Resend to Non-Openers version of this campaign', action: 'Resend a campaign', }, { name: 'Send', value: 'send', description: 'Send a campaign', action: 'Send a campaign', }, ], default: 'getAll', }, /* -------------------------------------------------------------------------- */ /* member:create */ /* -------------------------------------------------------------------------- */ { displayName: 'List Name or ID', name: 'list', type: 'options', typeOptions: { loadOptionsMethod: 'getLists', }, displayOptions: { show: { resource: ['member'], operation: ['create'], }, }, default: '', options: [], required: true, description: 'List of lists. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code/expressions/">expression</a>.', }, { displayName: 'Email', name: 'email', type: 'string', placeholder: 'name@email.com', required: true, displayOptions: { show: { resource: ['member'], operation: ['create'], }, }, default: '', description: 'Email address for a subscriber', }, { displayName: 'Status', name: 'status', type: 'options', required: true, displayOptions: { show: { resource: ['member'], operation: ['create'], }, }, options: [ { name: 'Cleaned', value: 'cleaned', }, { name: 'Pending', value: 'pending', }, { name: 'Subscribed', value: 'subscribed', }, { name: 'Transactional', value: 'transactional', }, { name: 'Unsubscribed', value: 'unsubscribed', }, ], default: '', description: "Subscriber's current status", }, { displayName: 'JSON Parameters', name: 'jsonParameters', type: 'boolean', default: false, displayOptions: { show: { resource: ['member'], operation: ['create'], }, }, }, { displayName: 'Options', name: 'options', type: 'collection', placeholder: 'Add option', default: {}, displayOptions: { show: { resource: ['member'], operation: ['create'], }, }, options: [ { displayName: 'Email Type', name: 'emailType', type: 'options', options: [ { name: 'HTML', value: 'html', }, { name: 'Text', value: 'text', }, ], default: '', description: 'Type of email this member asked to get', }, { displayName: 'Language', name: 'language', type: 'string', default: '', description: "If set/detected, the subscriber's language", }, { displayName: 'Opt-in IP', name: 'ipOptIn', type: 'string', default: '', description: 'The IP address the subscriber used to confirm their opt-in status', }, { displayName: 'Signup IP', name: 'ipSignup', type: 'string', default: '', description: 'IP address the subscriber signed up from', }, { displayName: 'Signup Timestamp', name: 'timestampSignup', type: 'dateTime', default: '', description: 'The date and time the subscriber signed up for the list in ISO 8601 format', }, { displayName: 'Tags', name: 'tags', type: 'string', default: '', description: 'The tags that are associated with a member separeted by ,', }, { displayName: 'Vip', name: 'vip', type: 'boolean', default: false, // eslint-disable-next-line n8n-nodes-base/node-param-description-boolean-without-whether description: 'Vip status for subscribers', }, { displayName: 'Opt-in Timestamp', name: 'timestampOpt', type: 'dateTime', default: '', description: 'The date and time the subscribe confirmed their opt-in status in ISO 8601 format', }, ], }, { displayName: 'Location', name: 'locationFieldsUi', type: 'fixedCollection', placeholder: 'Add Location', default: {}, description: 'Subscriber location information.n', displayOptions: { show: { resource: ['member'], operation: ['create'], jsonParameters: [false], }, }, options: [ { name: 'locationFieldsValues', displayName: 'Location', values: [ { displayName: 'Latitude', name: 'latitude', type: 'string', required: true, description: 'The location latitude', default: '', }, { displayName: 'Longitude', name: 'longitude', type: 'string', required: true, description: 'The location longitude', default: '', }, ], }, ], }, { displayName: 'Merge Fields', name: 'mergeFieldsUi', placeholder: 'Add Merge Fields', type: 'fixedCollection', default: {}, typeOptions: { multipleValues: true, }, displayOptions: { show: { resource: ['member'], operation: ['create'], jsonParameters: [false], }, }, description: 'An individual merge var and value for a member', options: [ { name: 'mergeFieldsValues', displayName: 'Field', typeOptions: { multipleValueButtonText: 'Add Field', }, values: [ { displayName: 'Field Name or ID', name: 'name', type: 'options', typeOptions: { loadOptionsMethod: 'getMergeFields', loadOptionsDependsOn: ['list'], }, required: true, description: 'Merge Field name. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code/expressions/">expression</a>.', default: '', }, { displayName: 'Field Value', name: 'value', required: true, type: 'string', default: '', description: 'Merge field value', }, ], }, ], }, { displayName: 'Merge Fields', name: 'mergeFieldsJson', type: 'json', typeOptions: { alwaysOpenEditWindow: true, }, default: '', displayOptions: { show: { resource: ['member'], operation: ['create'], jsonParameters: [true], }, }, }, { displayName: 'Location', name: 'locationJson', type: 'json', typeOptions: { alwaysOpenEditWindow: true, }, default: '', displayOptions: { show: { resource: ['member'], operation: ['create'], jsonParameters: [true], }, }, }, { displayName: 'Interest Groups', name: 'groupsUi', placeholder: 'Add Interest Group', type: 'fixedCollection', default: {}, typeOptions: { multipleValues: true, }, displayOptions: { show: { resource: ['member'], operation: ['create'], jsonParameters: [false], }, }, options: [ { name: 'groupsValues', displayName: 'Group', typeOptions: { multipleValueButtonText: 'Add Interest Group', }, values: [ { displayName: 'Category Name or ID', name: 'categoryId', type: 'options', description: 'Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code/expressions/">expression</a>', typeOptions: { loadOptionsMethod: 'getGroupCategories', loadOptionsDependsOn: ['list'], }, default: '', }, { displayName: 'Category Field ID', name: 'categoryFieldId', type: 'string', default: '', }, { displayName: 'Value', name: 'value', type: 'boolean', default: false, }, ], }, ], }, { displayName: 'Interest Groups', name: 'groupJson', type: 'json', typeOptions: { alwaysOpenEditWindow: true, }, default: '', displayOptions: { show: { resource: ['member'], operation: ['create'], jsonParameters: [true], }, }, }, /* -------------------------------------------------------------------------- */ /* member:delete */ /* -------------------------------------------------------------------------- */ { displayName: 'List Name or ID', name: 'list', type: 'options', typeOptions: { loadOptionsMethod: 'getLists', }, displayOptions: { show: { resource: ['member'], operation: ['delete'], }, }, default: '', options: [], required: true, description: 'List of lists. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code/expressions/">expression</a>.', }, { displayName: 'Email', name: 'email', type: 'string', placeholder: 'name@email.com', displayOptions: { show: { resource: ['member'], operation: ['delete'], }, }, default: '', required: true, description: "Member's email", }, /* -------------------------------------------------------------------------- */ /* member:get */ /* -------------------------------------------------------------------------- */ { displayName: 'List Name or ID', name: 'list', type: 'options', typeOptions: { loadOptionsMethod: 'getLists', }, displayOptions: { show: { resource: ['member'], operation: ['get'], }, }, default: '', options: [], required: true, description: 'List of lists. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code/expressions/">expression</a>.', }, { displayName: 'Email', name: 'email', type: 'string', placeholder: 'name@email.com', displayOptions: { show: { resource: ['member'], operation: ['get'], }, }, default: '', required: true, description: "Member's email", }, { displayName: 'Options', name: 'options', type: 'collection', placeholder: 'Add option', default: {}, displayOptions: { show: { resource: ['member'], operation: ['get'], }, }, options: [ { displayName: 'Fields', name: 'fields', type: 'string', default: '', description: 'A comma-separated list of fields to return', }, { displayName: 'Exclude Fields', name: 'excludeFields', type: 'string', default: '', description: 'A comma-separated list of fields to exclude', }, ], }, /* -------------------------------------------------------------------------- */ /* member:getAll */ /* -------------------------------------------------------------------------- */ { displayName: 'List Name or ID', name: 'list', type: 'options', typeOptions: { loadOptionsMethod: 'getLists', }, displayOptions: { show: { resource: ['member'], operation: ['getAll'], }, }, default: '', options: [], required: true, description: 'List of lists. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code/expressions/">expression</a>.', }, { displayName: 'Return All', name: 'returnAll', type: 'boolean', displayOptions: { show: { resource: ['member'], operation: ['getAll'], }, }, default: false, description: 'Whether to return all results or only up to a given limit', }, { displayName: 'Limit', name: 'limit', type: 'number', displayOptions: { show: { resource: ['member'], operation: ['getAll'], returnAll: [false], }, }, typeOptions: { minValue: 1, maxValue: 1000, }, default: 500, description: 'Max number of results to return', }, { displayName: 'Options', name: 'options', type: 'collection', placeholder: 'Add option', default: {}, displayOptions: { show: { resource: ['member'], operation: ['getAll'], }, }, options: [ { displayName: 'Before Last Changed', name: 'beforeLastChanged', type: 'dateTime', default: '', description: 'Restrict results to subscribers whose information changed before the set timeframe', }, { displayName: 'Before Timestamp Opt', name: 'beforeTimestampOpt', type: 'dateTime', default: '', description: 'Restrict results to subscribers who opted-in before the set timeframe', }, // { // displayName: 'Fields', // name: 'fields', // type: 'string', // default: '', // description: 'A comma-separated list of fields to return.', // }, // { // displayName: 'Exclude Fields', // name: 'excludeFields', // type: 'string', // default: '', // description: 'A comma-separated list of fields to exclude.', // }, { displayName: 'Email Type', name: 'emailType', type: 'options', options: [ { name: 'HTML', value: 'html', }, { name: 'Text', value: 'text', }, ], default: '', description: 'Type of email this member asked to get', }, { displayName: 'Status', name: 'status', type: 'options', options: [ { name: 'Cleaned', value: 'cleaned', }, { name: 'Pending', value: 'pending', }, { name: 'Subscribed', value: 'subscribed', }, { name: 'Transactional', value: 'transactional', }, { name: 'Unsubscribed', value: 'unsubscribed', }, ], default: '', description: "Subscriber's current status", }, { displayName: 'Since Last Changed', name: 'sinceLastChanged', type: 'dateTime', default: '', description: 'Restrict results to subscribers whose information changed after the set timeframe', }, ], }, /* -------------------------------------------------------------------------- */ /* member:update */ /* -------------------------------------------------------------------------- */ { displayName: 'List Name or ID', name: 'list', type: 'options', typeOptions: { loadOptionsMethod: 'getLists', }, displayOptions: { show: { resource: ['member'], operation: ['update'], }, }, default: '', options: [], required: true, description: 'List of lists. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code/expressions/">expression</a>.', }, { displayName: 'Email', name: 'email', type: 'string', placeholder: 'name@email.com', required: true, displayOptions: { show: { resource: ['member'], operation: ['update'], }, }, default: '', description: 'Email address of the subscriber', }, { displayName: 'JSON Parameters', name: 'jsonParameters', type: 'boolean', default: false, displayOptions: { show: { resource: ['member'], operation: ['update'], }, }, }, { displayName: 'Update Fields', name: 'updateFields', type: 'collection', placeholder: 'Add Field', default: {}, displayOptions: { show: { resource: ['member'], operation: ['update'], }, }, options: [ { displayName: 'Email Type', name: 'emailType', type: 'options', options: [ { name: 'HTML', value: 'html', }, { name: 'Text', value: 'text', }, ], default: '', description: 'Type of email this member asked to get', }, { displayName: 'Interest Groups', name: 'groupsUi', placeholder: 'Add Interest Group', type: 'fixedCollection', default: {}, typeOptions: { multipleValues: true, }, displayOptions: { show: { '/resource': ['member'], '/operation': ['update'], '/jsonParameters': [false], }, }, options: [ { name: 'groupsValues', displayName: 'Group', typeOptions: { multipleValueButtonText: 'Add Interest Group', }, values: [ { displayName: 'Category Name or ID', name: 'categoryId', type: 'options', description: 'Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code/expressions/">expression</a>', typeOptions: { loadOptionsMethod: 'getGroupCategories', loadOptionsDependsOn: ['list'], }, default: '', }, { displayName: 'Category Field ID', name: 'categoryFieldId', type: 'string', default: '', }, { displayName: 'Value', name: 'value', type: 'boolean', default: false, }, ], }, ], }, { displayName: 'Language', name: 'language', type: 'string', default: '', description: "If set/detected, the subscriber's language", }, { displayName: 'Merge Fields', name: 'mergeFieldsUi', placeholder: 'Add Merge Fields', type: 'fixedCollection', default: {}, typeOptions: { multipleValues: true, }, displayOptions: { show: { '/resource': ['member'], '/operation': ['update'], '/jsonParameters': [false], }, }, description: 'An individual merge var and value for a member', options: [ { name: 'mergeFieldsValues', displayName: 'Field', typeOptions: { multipleValueButtonText: 'Add Field', }, values: [ { displayName: 'Field Name or ID', name: 'name', type: 'options', typeOptions: { loadOptionsMethod: 'getMergeFields', loadOptionsDependsOn: ['list'], }, required: true, description: 'Merge Field name. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code/expressions/">expression</a>.', default: '', }, { displayName: 'Field Value', name: 'value', required: true, type: 'string', default: '', description: 'Merge field value', }, ], }, ], }, { displayName: 'Opt-in IP', name: 'ipOptIn', type: 'string', default: '', description: 'The IP address the subscriber used to confirm their opt-in status', }, { displayName: 'Signup IP', name: 'ipSignup', type: 'string', default: '', description: 'IP address the subscriber signed up from', }, { displayName: 'Signup Timestamp', name: 'timestampSignup', type: 'dateTime', default: '', description: 'The date and time the subscriber signed up for the list in ISO 8601 format', }, { displayName: 'Skip Merge Validation', name: 'skipMergeValidation', type: 'boolean', default: false, description: 'Whether member data will be accepted without merge field values, even if the merge field is usually required', }, { displayName: 'Status', name: 'status', type: 'options', options: [ { name: 'Cleaned', value: 'cleaned', }, { name: 'Pending', value: 'pending', }, { name: 'Subscribed', value: 'subscribed', }, { name: 'Transactional', value: 'transactional', }, { name: 'Unsubscribed', value: 'unsubscribed', }, ], default: '', description: "Subscriber's current status", }, { displayName: 'Vip', name: 'vip', type: 'boolean', default: false, // eslint-disable-next-line n8n-nodes-base/node-param-description-boolean-without-whether description: 'Vip status for subscribers', }, { displayName: 'Location', name: 'locationFieldsUi', type: 'fixedCollection', placeholder: 'Add Location', default: {}, description: 'Subscriber location information.n', displayOptions: { show: { '/resource': ['member'], '/operation': ['update'], '/jsonParameters': [false], }, }, options: [ { name: 'locationFieldsValues', displayName: 'Location', values: [ { displayName: 'Latitude', name: 'latitude', type: 'string', required: true, description: 'The location latitude', default: '', }, { displayName: 'Longitude', name: 'longitude', type: 'string', required: true, description: 'The location longitude', default: '', }, ], }, ], }, { displayName: 'Opt-in Timestamp', name: 'timestampOpt', type: 'dateTime', default: '', description: 'The date and time the subscribe confirmed their opt-in status in ISO 8601 format', }, ], }, { displayName: 'Merge Fields', name: 'mergeFieldsJson', type: 'json', typeOptions: { alwaysOpenEditWindow: true, }, default: '', displayOptions: { show: { resource: ['member'], operation: ['update'], jsonParameters: [true], }, }, }, { displayName: 'Location', name: 'locationJson', type: 'json', typeOptions: { alwaysOpenEditWindow: true, }, default: '', displayOptions: { show: { resource: ['member'], operation: ['update'], jsonParameters: [true], }, }, }, { displayName: 'Interest Groups', name: 'groupJson', type: 'json', typeOptions: { alwaysOpenEditWindow: true, }, default: '', displayOptions: { show: { resource: ['member'], operation: ['update'], jsonParameters: [true], }, }, }, /* -------------------------------------------------------------------------- */ /* memberTag:create */ /* -------------------------------------------------------------------------- */ { displayName: 'List Name or ID', name: 'list', type: 'options', typeOptions: { loadOptionsMethod: 'getLists', }, displayOptions: { show: { resource: ['memberTag'], operation: ['create', 'delete'], }, }, default: '', options: [], required: true, description: 'List of lists. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code/expressions/">expression</a>.', }, { displayName: 'Email', name: 'email', type: 'string', placeholder: 'name@email.com', required: true, displayOptions: { show: { resource: ['memberTag'], operation: ['create', 'delete'], }, }, default: '', description: 'Email address of the subscriber', }, { displayName: 'Tags', name: 'tags', type: 'string', typeOptions: { multipleValues: true, multipleValueButtonText: 'Add Tag', }, displayOptions: { show: { resource: ['memberTag'], operation: ['create', 'delete'], }, }, default: [], }, { displayName: 'Options', name: 'options', type: 'collection', placeholder: 'Add option', default: {}, displayOptions: { show: { resource: ['memberTag'], operation: ['create', 'delete'], }, }, options: [ { displayName: 'Is Syncing', name: 'isSyncing', type: 'boolean', default: false, description: 'Whether automations based on the tags in the request will not fire', }, ], }, /* -------------------------------------------------------------------------- */ /* member:getAll */ /* -------------------------------------------------------------------------