mirror of
https://github.com/n8n-io/n8n-nodes-starter.git
synced 2025-12-16 17:33:01 -06:00
Add Autosend node with Mail and Contact resources
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
This commit is contained in:
parent
2e9e5c61ed
commit
2f1ffde4a5
15 changed files with 1142 additions and 7 deletions
80
nodes/Autosend/resources/contact/get.ts
Normal file
80
nodes/Autosend/resources/contact/get.ts
Normal file
|
|
@ -0,0 +1,80 @@
|
|||
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',
|
||||
},
|
||||
];
|
||||
Loading…
Add table
Add a link
Reference in a new issue