mirror of
https://github.com/n8n-io/n8n-nodes-starter.git
synced 2025-12-15 17:03:01 -06:00
Implement n8n node for Autosend API with support for: - Mail resource: Send single and bulk emails with template or custom content - Contact resource: Create/update contacts (upsert) and get contacts by ID or email - API key authentication - Declarative routing following n8n best practices - Full TypeScript support with proper typing - Passing all linting checks
80 lines
1.6 KiB
TypeScript
80 lines
1.6 KiB
TypeScript
import type { INodeProperties } from 'n8n-workflow';
|
|
|
|
export const getOperation: INodeProperties[] = [
|
|
{
|
|
displayName: 'Search By',
|
|
name: 'searchBy',
|
|
type: 'options',
|
|
required: true,
|
|
default: 'email',
|
|
options: [
|
|
{
|
|
name: 'Email',
|
|
value: 'email',
|
|
description: 'Search contact by email address',
|
|
},
|
|
{
|
|
name: 'ID',
|
|
value: 'id',
|
|
description: 'Search contact by ID',
|
|
},
|
|
],
|
|
displayOptions: {
|
|
show: {
|
|
resource: ['contact'],
|
|
operation: ['get'],
|
|
},
|
|
},
|
|
description: 'How to search for the contact',
|
|
},
|
|
{
|
|
displayName: 'Contact ID',
|
|
name: 'contactId',
|
|
type: 'string',
|
|
required: true,
|
|
default: '',
|
|
displayOptions: {
|
|
show: {
|
|
resource: ['contact'],
|
|
operation: ['get'],
|
|
searchBy: ['id'],
|
|
},
|
|
},
|
|
routing: {
|
|
request: {
|
|
url: '=/contacts/{{$parameter.contactId}}',
|
|
},
|
|
},
|
|
description: 'The ID of the contact to retrieve',
|
|
},
|
|
{
|
|
displayName: 'Email',
|
|
name: 'email',
|
|
type: 'string',
|
|
required: true,
|
|
placeholder: 'contact@example.com',
|
|
default: '',
|
|
displayOptions: {
|
|
show: {
|
|
resource: ['contact'],
|
|
operation: ['get'],
|
|
searchBy: ['email'],
|
|
},
|
|
},
|
|
routing: {
|
|
send: {
|
|
type: 'body',
|
|
property: 'emails',
|
|
preSend: [
|
|
async function (this, requestOptions) {
|
|
const email = this.getNodeParameter('email') as string;
|
|
requestOptions.body = requestOptions.body || {};
|
|
(requestOptions.body as Record<string, unknown>).emails = [email];
|
|
return requestOptions;
|
|
},
|
|
],
|
|
},
|
|
},
|
|
description: 'The email address of the contact to search for',
|
|
},
|
|
];
|