first commit
Security: Sync from Public / sync-from-public (push) Has been cancelled
Test: Benchmark Nightly / build (push) Has been cancelled
Test: Benchmark Nightly / Notify Cats on failure (push) Has been cancelled
CI: Python / Checks (push) Has been cancelled
Test: Evals Python / Workflow Comparison Python (push) Has been cancelled
Util: Check Docs URLs / check-docs-urls (push) Has been cancelled
Test: Visual Storybook / Cloudflare Pages (push) Has been cancelled
Test: E2E Performance / build-and-test-performance (push) Has been cancelled
Test: Workflows Nightly / Run Workflow Tests (push) Has been cancelled
Util: Cleanup CI Docker Images / Delete stale CI images (push) Has been cancelled
Test: Benchmark Destroy Env / build (push) Has been cancelled
Util: Update Node Popularity / update-popularity (push) Has been cancelled
Test: E2E Coverage Weekly / Coverage Tests (push) Has been cancelled

This commit is contained in:
2026-03-17 16:22:57 +03:30
commit 3d5eaf9445
15349 changed files with 2847338 additions and 0 deletions
@@ -0,0 +1,152 @@
import type { INodeProperties } from 'n8n-workflow';
import { makeSimpleField } from './SharedFields';
export const attendanceOperations: INodeProperties[] = [
{
displayName: 'Operation',
name: 'operation',
type: 'options',
noDataExpression: true,
displayOptions: {
show: {
resource: ['attendance'],
},
},
options: [
{
name: 'Create',
value: 'create',
action: 'Create an attendance',
},
{
name: 'Get',
value: 'get',
action: 'Get an attendance',
},
{
name: 'Get Many',
value: 'getAll',
action: 'Get many attendances',
},
],
default: 'create',
},
];
export const attendanceFields: INodeProperties[] = [
// ----------------------------------------
// attendance: create
// ----------------------------------------
{
displayName: 'Person ID',
name: 'personId',
description: 'ID of the person to create an attendance for',
type: 'string',
default: '',
required: true,
displayOptions: {
show: {
resource: ['attendance'],
operation: ['create'],
},
},
},
{
displayName: 'Event ID',
name: 'eventId',
description: 'ID of the event to create an attendance for',
type: 'string',
default: '',
required: true,
displayOptions: {
show: {
resource: ['attendance'],
operation: ['create'],
},
},
},
makeSimpleField('attendance', 'create'),
// ----------------------------------------
// attendance: get
// ----------------------------------------
{
displayName: 'Event ID',
name: 'eventId',
description: 'ID of the event whose attendance to retrieve',
type: 'string',
default: '',
required: true,
displayOptions: {
show: {
resource: ['attendance'],
operation: ['get'],
},
},
},
{
displayName: 'Attendance ID',
name: 'attendanceId',
description: 'ID of the attendance to retrieve',
type: 'string',
default: '',
required: true,
displayOptions: {
show: {
resource: ['attendance'],
operation: ['get'],
},
},
},
makeSimpleField('attendance', 'get'),
// ----------------------------------------
// attendance: getAll
// ----------------------------------------
{
displayName: 'Event ID',
name: 'eventId',
description: 'ID of the event to create an attendance for',
type: 'string',
default: '',
required: true,
displayOptions: {
show: {
resource: ['attendance'],
operation: ['getAll'],
},
},
},
{
displayName: 'Return All',
name: 'returnAll',
type: 'boolean',
default: false,
description: 'Whether to return all results or only up to a given limit',
displayOptions: {
show: {
resource: ['attendance'],
operation: ['getAll'],
},
},
},
{
displayName: 'Limit',
name: 'limit',
type: 'number',
default: 50,
description: 'Max number of results to return',
typeOptions: {
minValue: 1,
},
displayOptions: {
show: {
resource: ['attendance'],
operation: ['getAll'],
returnAll: [false],
},
},
},
makeSimpleField('attendance', 'getAll'),
];
@@ -0,0 +1,138 @@
import type { INodeProperties } from 'n8n-workflow';
import { eventAdditionalFieldsOptions, makeSimpleField } from './SharedFields';
export const eventOperations: INodeProperties[] = [
{
displayName: 'Operation',
name: 'operation',
type: 'options',
noDataExpression: true,
displayOptions: {
show: {
resource: ['event'],
},
},
options: [
{
name: 'Create',
value: 'create',
action: 'Create an event',
},
{
name: 'Get',
value: 'get',
action: 'Get an event',
},
{
name: 'Get Many',
value: 'getAll',
action: 'Get many events',
},
],
default: 'create',
},
];
export const eventFields: INodeProperties[] = [
// ----------------------------------------
// event: create
// ----------------------------------------
{
displayName: 'Origin System',
name: 'originSystem',
description: 'Source where the event originated',
type: 'string',
required: true,
default: '',
displayOptions: {
show: {
resource: ['event'],
operation: ['create'],
},
},
},
{
displayName: 'Title',
name: 'title',
description: 'Title of the event to create',
type: 'string',
required: true,
default: '',
displayOptions: {
show: {
resource: ['event'],
operation: ['create'],
},
},
},
makeSimpleField('event', 'create'),
{
displayName: 'Additional Fields',
name: 'additionalFields',
type: 'collection',
placeholder: 'Add Field',
default: {},
displayOptions: {
show: {
resource: ['event'],
operation: ['create'],
},
},
options: eventAdditionalFieldsOptions,
},
// ----------------------------------------
// event: get
// ----------------------------------------
{
displayName: 'Event ID',
name: 'eventId',
description: 'ID of the event to retrieve',
type: 'string',
default: '',
required: true,
displayOptions: {
show: {
resource: ['event'],
operation: ['get'],
},
},
},
makeSimpleField('event', 'get'),
// ----------------------------------------
// event: getAll
// ----------------------------------------
{
displayName: 'Return All',
name: 'returnAll',
type: 'boolean',
default: false,
description: 'Whether to return all results or only up to a given limit',
displayOptions: {
show: {
resource: ['event'],
operation: ['getAll'],
},
},
},
{
displayName: 'Limit',
name: 'limit',
type: 'number',
default: 50,
description: 'Max number of results to return',
typeOptions: {
minValue: 1,
},
displayOptions: {
show: {
resource: ['event'],
operation: ['getAll'],
returnAll: [false],
},
},
},
makeSimpleField('event', 'getAll'),
];
@@ -0,0 +1,218 @@
import type { INodeProperties } from 'n8n-workflow';
import { makeSimpleField, personAdditionalFieldsOptions } from './SharedFields';
export const personOperations: INodeProperties[] = [
{
displayName: 'Operation',
name: 'operation',
type: 'options',
noDataExpression: true,
displayOptions: {
show: {
resource: ['person'],
},
},
options: [
{
name: 'Create',
value: 'create',
action: 'Create a person',
},
{
name: 'Get',
value: 'get',
action: 'Get a person',
},
{
name: 'Get Many',
value: 'getAll',
action: 'Get many people',
},
{
name: 'Update',
value: 'update',
action: 'Update a person',
},
],
default: 'create',
},
];
export const personFields: INodeProperties[] = [
// ----------------------------------------
// person: create
// ----------------------------------------
makeSimpleField('person', 'create'),
{
displayName: 'Email Address', // on create, only _one_ must be passed in
name: 'email_addresses',
type: 'fixedCollection',
default: {},
placeholder: 'Add Email Address Field',
description: 'Persons email addresses',
displayOptions: {
show: {
resource: ['person'],
operation: ['create'],
},
},
options: [
{
displayName: 'Email Addresses Fields',
name: 'email_addresses_fields',
values: [
{
displayName: 'Address',
name: 'address',
type: 'string',
default: '',
description: "Person's email address",
},
{
displayName: 'Primary',
name: 'primary',
type: 'hidden',
default: true,
description: "Whether this is the person's primary email address",
},
{
displayName: 'Status',
name: 'status',
type: 'options',
default: 'subscribed',
description: 'Subscription status of this email address',
options: [
{
name: 'Bouncing',
value: 'bouncing',
},
{
name: 'Previous Bounce',
value: 'previous bounce',
},
{
name: 'Previous Spam Complaint',
value: 'previous spam complaint',
},
{
name: 'Spam Complaint',
value: 'spam complaint',
},
{
name: 'Subscribed',
value: 'subscribed',
},
{
name: 'Unsubscribed',
value: 'unsubscribed',
},
],
},
],
},
],
},
{
displayName: 'Additional Fields',
name: 'additionalFields',
type: 'collection',
placeholder: 'Add Field',
default: {},
displayOptions: {
show: {
resource: ['person'],
operation: ['create'],
},
},
options: personAdditionalFieldsOptions,
},
// ----------------------------------------
// person: get
// ----------------------------------------
{
displayName: 'Person ID',
name: 'personId',
description: 'ID of the person to retrieve',
type: 'string',
required: true,
default: '',
displayOptions: {
show: {
resource: ['person'],
operation: ['get'],
},
},
},
makeSimpleField('person', 'get'),
// ----------------------------------------
// person: getAll
// ----------------------------------------
{
displayName: 'Return All',
name: 'returnAll',
type: 'boolean',
default: false,
description: 'Whether to return all results or only up to a given limit',
displayOptions: {
show: {
resource: ['person'],
operation: ['getAll'],
},
},
},
{
displayName: 'Limit',
name: 'limit',
type: 'number',
default: 25,
description: 'Max number of results to return',
typeOptions: {
minValue: 1,
maxValue: 25,
},
displayOptions: {
show: {
resource: ['person'],
operation: ['getAll'],
returnAll: [false],
},
},
},
makeSimpleField('person', 'getAll'),
// ----------------------------------------
// person: update
// ----------------------------------------
{
displayName: 'Person ID',
name: 'personId',
description: 'ID of the person to update',
type: 'string',
required: true,
default: '',
displayOptions: {
show: {
resource: ['person'],
operation: ['update'],
},
},
},
makeSimpleField('person', 'update'),
{
displayName: 'Update Fields',
name: 'updateFields',
type: 'collection',
placeholder: 'Add Field',
default: {},
displayOptions: {
show: {
resource: ['person'],
operation: ['update'],
},
},
options: personAdditionalFieldsOptions,
},
];
@@ -0,0 +1,107 @@
import type { INodeProperties } from 'n8n-workflow';
export const personTagOperations: INodeProperties[] = [
{
displayName: 'Operation',
name: 'operation',
type: 'options',
noDataExpression: true,
displayOptions: {
show: {
resource: ['personTag'],
},
},
options: [
{
name: 'Add',
value: 'add',
action: 'Add a person tag',
},
{
name: 'Remove',
value: 'remove',
action: 'Remove a person tag',
},
],
default: 'add',
},
];
export const personTagFields: INodeProperties[] = [
// ----------------------------------------
// personTag: add
// ----------------------------------------
{
displayName: 'Tag Name or ID',
name: 'tagId',
description:
'ID of the tag to add. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code/expressions/">expression</a>.',
type: 'options',
typeOptions: {
loadOptionsMethod: 'getTags',
},
required: true,
default: [],
displayOptions: {
show: {
resource: ['personTag'],
operation: ['add'],
},
},
},
{
displayName: 'Person ID',
name: 'personId',
description: 'ID of the person to add the tag to',
type: 'string',
default: '',
required: true,
displayOptions: {
show: {
resource: ['personTag'],
operation: ['add'],
},
},
},
// ----------------------------------------
// personTag: remove
// ----------------------------------------
{
displayName: 'Tag Name or ID',
name: 'tagId',
description:
'ID of the tag whose tagging to delete. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code/expressions/">expression</a>.',
type: 'options',
typeOptions: {
loadOptionsMethod: 'getTags',
},
default: [],
required: true,
displayOptions: {
show: {
resource: ['personTag'],
operation: ['remove'],
},
},
},
{
displayName: 'Tagging Name or ID',
name: 'taggingId',
description:
'ID of the tagging to remove. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code/expressions/">expression</a>.',
type: 'options',
typeOptions: {
loadOptionsDependsOn: ['tagId'],
loadOptionsMethod: 'getTaggings',
},
required: true,
default: [],
displayOptions: {
show: {
resource: ['personTag'],
operation: ['remove'],
},
},
},
];
@@ -0,0 +1,176 @@
import type { INodeProperties } from 'n8n-workflow';
import { makeSimpleField, petitionAdditionalFieldsOptions } from './SharedFields';
export const petitionOperations: INodeProperties[] = [
{
displayName: 'Operation',
name: 'operation',
type: 'options',
noDataExpression: true,
displayOptions: {
show: {
resource: ['petition'],
},
},
options: [
{
name: 'Create',
value: 'create',
action: 'Create a petition',
},
{
name: 'Get',
value: 'get',
action: 'Get a petition',
},
{
name: 'Get Many',
value: 'getAll',
action: 'Get many petitions',
},
{
name: 'Update',
value: 'update',
action: 'Update a petition',
},
],
default: 'create',
},
];
export const petitionFields: INodeProperties[] = [
// ----------------------------------------
// petition: create
// ----------------------------------------
{
displayName: 'Origin System',
name: 'originSystem',
description: 'Source where the petition originated',
type: 'string',
required: true,
default: '',
displayOptions: {
show: {
resource: ['petition'],
operation: ['create'],
},
},
},
{
displayName: 'Title',
name: 'title',
description: 'Title of the petition to create',
type: 'string',
required: true,
default: '',
displayOptions: {
show: {
resource: ['petition'],
operation: ['create'],
},
},
},
makeSimpleField('petition', 'create'),
{
displayName: 'Additional Fields',
name: 'additionalFields',
type: 'collection',
placeholder: 'Add Field',
default: {},
displayOptions: {
show: {
resource: ['petition'],
operation: ['create'],
},
},
options: petitionAdditionalFieldsOptions,
},
// ----------------------------------------
// petition: get
// ----------------------------------------
{
displayName: 'Petition ID',
name: 'petitionId',
description: 'ID of the petition to retrieve',
type: 'string',
default: '',
required: true,
displayOptions: {
show: {
resource: ['petition'],
operation: ['get'],
},
},
},
makeSimpleField('petition', 'get'),
// ----------------------------------------
// petition: getAll
// ----------------------------------------
{
displayName: 'Return All',
name: 'returnAll',
type: 'boolean',
default: false,
description: 'Whether to return all results or only up to a given limit',
displayOptions: {
show: {
resource: ['petition'],
operation: ['getAll'],
},
},
},
{
displayName: 'Limit',
name: 'limit',
type: 'number',
default: 50,
description: 'Max number of results to return',
typeOptions: {
minValue: 1,
},
displayOptions: {
show: {
resource: ['petition'],
operation: ['getAll'],
returnAll: [false],
},
},
},
makeSimpleField('petition', 'getAll'),
// ----------------------------------------
// petition: update
// ----------------------------------------
{
displayName: 'Petition ID',
name: 'petitionId',
description: 'ID of the petition to update',
type: 'string',
default: '',
required: true,
displayOptions: {
show: {
resource: ['petition'],
operation: ['update'],
},
},
},
makeSimpleField('petition', 'update'),
{
displayName: 'Update Fields',
name: 'updateFields',
type: 'collection',
placeholder: 'Add Field',
default: {},
displayOptions: {
show: {
resource: ['petition'],
operation: ['update'],
},
},
options: petitionAdditionalFieldsOptions,
},
];
@@ -0,0 +1,372 @@
import type { INodeProperties } from 'n8n-workflow';
import type { Operation, Resource, LanguageOptions } from '../types';
export const languageOptions: LanguageOptions = [
{
name: 'Danish',
value: 'da',
},
{
name: 'Dutch',
value: 'nl',
},
{
name: 'English',
value: 'en',
},
{
name: 'Finnish',
value: 'fi',
},
{
name: 'French',
value: 'fr',
},
{
name: 'German',
value: 'de',
},
{
name: 'Hungarian',
value: 'hu',
},
{
name: 'Indonesian',
value: 'id',
},
{
name: 'Japanese',
value: 'ja',
},
{
name: 'Portuguese - Portugal',
value: 'pt',
},
{
name: 'Portuguese - Brazil',
value: 'br',
},
{
name: 'Rumanian',
value: 'ru',
},
{
name: 'Spanish',
value: 'es',
},
{
name: 'Swedish',
value: 'sv',
},
{
name: 'Turkish',
value: 'tr',
},
{
name: 'Welsh',
value: 'cy',
},
];
const postalAddressesFields: INodeProperties[] = [
{
displayName: 'Primary',
name: 'primary',
type: 'boolean',
default: false,
description: "Whether this is the person's primary address",
},
{
displayName: 'Address Line',
name: 'address_lines',
type: 'string', // The Action Network API expects a string array but ignores any string beyond the first, so this input field is simplified to string.
default: '',
description: "Line for a person's address",
},
{
displayName: 'Locality',
name: 'locality',
type: 'string',
default: '',
description:
"City or other local administrative area. If blank, this will be filled in based on Action Network's geocoding.",
},
{
displayName: 'Region',
name: 'region',
type: 'string',
default: '',
description: 'State or subdivision code per ISO 3166-2',
},
{
displayName: 'Postal Code',
name: 'postal_code',
type: 'string',
default: '',
description: 'Region specific postal code, such as ZIP code',
},
{
displayName: 'Country',
name: 'country',
type: 'string',
default: '',
description: 'Country code according to ISO 3166-1 Alpha-2. Defaults to US.',
},
{
displayName: 'Language',
name: 'language',
type: 'string',
default: '',
description: 'Language in which the address is recorded, per ISO 639',
},
{
displayName: 'Location',
name: 'location',
type: 'fixedCollection',
default: {},
options: [
{
displayName: 'Location Fields',
name: 'location_fields',
values: [
{
displayName: 'Latitude',
name: 'latitude',
type: 'string',
default: '',
description: 'Latitude of the location of the address',
},
{
displayName: 'Longitude',
name: 'longitude',
type: 'string',
default: '',
description: 'Longitude of the location of the address',
},
],
},
],
},
];
export const eventAdditionalFieldsOptions: INodeProperties['options'] = [
{
displayName: 'Browser URL',
name: 'browser_url',
type: 'string',
default: '',
description: 'URL to this events page on the Action Network or a third party',
},
{
displayName: 'Description',
name: 'description',
type: 'string',
default: '',
description: 'Description of the event. HTML supported.',
},
{
displayName: 'End Date',
name: 'end_date',
type: 'dateTime',
default: '',
description: 'End date and time of the event',
},
{
displayName: 'Featured Image URL',
name: 'featured_image_url',
type: 'string',
default: '',
description: 'URL to this events featured image on the Action Network',
},
{
displayName: 'Instructions',
name: 'instructions',
type: 'string',
default: '',
description: "Event's instructions for activists, visible after they RSVP. HTML supported.",
},
{
displayName: 'Location',
name: 'location',
type: 'fixedCollection',
default: {},
placeholder: 'Add Location Field',
typeOptions: {
multipleValues: false,
},
options: [
// different name, identical structure
{
displayName: 'Postal Addresses Fields',
name: 'postal_addresses_fields',
placeholder: 'Add Postal Address Field',
values: postalAddressesFields,
},
],
},
{
displayName: 'Name',
name: 'name',
type: 'string',
default: '',
description: 'Internal (not public) title of the event',
},
{
displayName: 'Start Date',
name: 'start_date',
type: 'dateTime',
default: '',
description: 'Start date and time of the event',
},
];
export const personAdditionalFieldsOptions: INodeProperties['options'] = [
{
displayName: 'Family Name',
name: 'family_name',
type: 'string',
default: '',
description: 'Persons last name',
},
{
displayName: 'Given Name',
name: 'given_name',
type: 'string',
default: '',
description: 'Persons first name',
},
{
displayName: 'Language Spoken',
name: 'languages_spoken',
type: 'options', // Action Network accepts a `string[]` of language codes, but supports only one language per person - sending an array of 2+ languages will result in the first valid language being set as the preferred language for the person. Therefore, the user may select only one option in the n8n UI.
default: [],
description: 'Language spoken by the person',
options: languageOptions,
},
{
displayName: 'Phone Number', // on create, only _one_ must be passed in
name: 'phone_numbers',
type: 'fixedCollection',
default: {},
placeholder: 'Add Phone Numbers Field',
options: [
{
displayName: 'Phone Numbers Fields',
name: 'phone_numbers_fields',
placeholder: 'Add Phone Number Field',
values: [
{
displayName: 'Number',
name: 'number',
type: 'string',
default: '',
description: "Person's mobile number, in international format without the plus sign",
},
{
displayName: 'Primary',
name: 'primary',
type: 'hidden',
default: true,
description: "Whether this is the person's primary phone number",
},
{
displayName: 'Status',
name: 'status',
type: 'options',
default: 'subscribed',
description: 'Subscription status of this number',
options: [
{
name: 'Bouncing',
value: 'bouncing',
},
{
name: 'Previous Bounce',
value: 'previous bounce',
},
{
name: 'Subscribed',
value: 'subscribed',
},
{
name: 'Unsubscribed',
value: 'unsubscribed',
},
],
},
],
},
],
},
{
displayName: 'Postal Addresses',
name: 'postal_addresses',
type: 'fixedCollection',
default: {},
placeholder: 'Add Postal Addresses Field',
typeOptions: {
multipleValues: true,
},
options: [
{
displayName: 'Postal Addresses Fields',
name: 'postal_addresses_fields',
placeholder: 'Add Postal Address Field',
values: postalAddressesFields,
},
],
},
];
export const petitionAdditionalFieldsOptions: INodeProperties[] = [
{
displayName: 'Browser URL',
name: 'browser_url',
type: 'string',
default: '',
description: 'URL to this petitions page on the Action Network or a third party',
},
{
displayName: 'Featured Image URL',
name: 'featured_image_url',
type: 'string',
default: '',
description: 'URL to this actions featured image on the Action Network',
},
{
displayName: 'Name',
name: 'name',
type: 'string',
default: '',
description: 'Internal (not public) title of the petition',
},
{
displayName: 'Petition Text',
name: 'petition_text',
type: 'string',
default: '',
description: 'Text of the letter to the petitions target',
},
{
displayName: 'Targets',
name: 'target',
type: 'string',
default: '',
description: 'Comma-separated names of targets for this petition',
},
];
export const makeSimpleField = (resource: Resource, operation: Operation): INodeProperties => ({
displayName: 'Simplify',
name: 'simple',
type: 'boolean',
displayOptions: {
show: {
resource: [resource],
operation: [operation],
},
},
default: true,
description: 'Whether to return a simplified version of the response instead of the raw data',
});
@@ -0,0 +1,234 @@
import type { INodeProperties } from 'n8n-workflow';
import { makeSimpleField } from './SharedFields';
export const signatureOperations: INodeProperties[] = [
{
displayName: 'Operation',
name: 'operation',
type: 'options',
noDataExpression: true,
displayOptions: {
show: {
resource: ['signature'],
},
},
options: [
{
name: 'Create',
value: 'create',
action: 'Create a signature',
},
{
name: 'Get',
value: 'get',
action: 'Get a signature',
},
{
name: 'Get Many',
value: 'getAll',
action: 'Get many signatures',
},
{
name: 'Update',
value: 'update',
action: 'Update a signature',
},
],
default: 'create',
},
];
export const signatureFields: INodeProperties[] = [
// ----------------------------------------
// signature: create
// ----------------------------------------
{
displayName: 'Petition ID',
name: 'petitionId',
description: 'ID of the petition to sign',
type: 'string',
default: '',
required: true,
displayOptions: {
show: {
resource: ['signature'],
operation: ['create'],
},
},
},
{
displayName: 'Person ID',
name: 'personId',
description: 'ID of the person whose signature to create',
type: 'string',
default: '',
required: true,
displayOptions: {
show: {
resource: ['signature'],
operation: ['create'],
},
},
},
makeSimpleField('signature', 'create'),
{
displayName: 'Additional Fields',
name: 'additionalFields',
type: 'collection',
placeholder: 'Add Field',
default: {},
displayOptions: {
show: {
resource: ['signature'],
operation: ['create'],
},
},
options: [
{
displayName: 'Comments',
name: 'comments',
type: 'string',
default: '',
description: 'Comments to leave when signing this petition',
},
],
},
// ----------------------------------------
// signature: get
// ----------------------------------------
{
displayName: 'Petition ID',
name: 'petitionId',
description: 'ID of the petition whose signature to retrieve',
type: 'string',
default: '',
required: true,
displayOptions: {
show: {
resource: ['signature'],
operation: ['get'],
},
},
},
{
displayName: 'Signature ID',
name: 'signatureId',
description: 'ID of the signature to retrieve',
type: 'string',
default: '',
required: true,
displayOptions: {
show: {
resource: ['signature'],
operation: ['get'],
},
},
},
makeSimpleField('signature', 'get'),
// ----------------------------------------
// signature: getAll
// ----------------------------------------
{
displayName: 'Petition ID',
name: 'petitionId',
description: 'ID of the petition whose signatures to retrieve',
type: 'string',
default: '',
required: true,
displayOptions: {
show: {
resource: ['signature'],
operation: ['getAll'],
},
},
},
{
displayName: 'Return All',
name: 'returnAll',
type: 'boolean',
default: false,
description: 'Whether to return all results or only up to a given limit',
displayOptions: {
show: {
resource: ['signature'],
operation: ['getAll'],
},
},
},
{
displayName: 'Limit',
name: 'limit',
type: 'number',
default: 50,
description: 'Max number of results to return',
typeOptions: {
minValue: 1,
},
displayOptions: {
show: {
resource: ['signature'],
operation: ['getAll'],
returnAll: [false],
},
},
},
makeSimpleField('signature', 'getAll'),
// ----------------------------------------
// signature: update
// ----------------------------------------
{
displayName: 'Petition ID',
name: 'petitionId',
description: 'ID of the petition whose signature to update',
type: 'string',
default: '',
required: true,
displayOptions: {
show: {
resource: ['signature'],
operation: ['update'],
},
},
},
{
displayName: 'Signature ID',
name: 'signatureId',
description: 'ID of the signature to update',
type: 'string',
default: '',
required: true,
displayOptions: {
show: {
resource: ['signature'],
operation: ['update'],
},
},
},
makeSimpleField('signature', 'update'),
{
displayName: 'Update Fields',
name: 'updateFields',
type: 'collection',
placeholder: 'Add Field',
default: {},
displayOptions: {
show: {
resource: ['signature'],
operation: ['update'],
},
},
options: [
{
displayName: 'Comments',
name: 'comments',
type: 'string',
default: '',
description: 'Comments to leave when signing this petition',
},
],
},
];
@@ -0,0 +1,110 @@
import type { INodeProperties } from 'n8n-workflow';
import { makeSimpleField } from './SharedFields';
export const tagOperations: INodeProperties[] = [
{
displayName: 'Operation',
name: 'operation',
type: 'options',
noDataExpression: true,
displayOptions: {
show: {
resource: ['tag'],
},
},
options: [
{
name: 'Create',
value: 'create',
action: 'Create a tag',
},
{
name: 'Get',
value: 'get',
action: 'Get a tag',
},
{
name: 'Get Many',
value: 'getAll',
action: 'Get many tags',
},
],
default: 'create',
},
];
export const tagFields: INodeProperties[] = [
// ----------------------------------------
// tag: create
// ----------------------------------------
{
displayName: 'Name',
name: 'name',
description: 'Name of the tag to create',
type: 'string',
required: true,
default: '',
displayOptions: {
show: {
resource: ['tag'],
operation: ['create'],
},
},
},
makeSimpleField('tag', 'create'),
// ----------------------------------------
// tag: get
// ----------------------------------------
{
displayName: 'Tag ID',
name: 'tagId',
description: 'ID of the tag to retrieve',
type: 'string',
default: '',
required: true,
displayOptions: {
show: {
resource: ['tag'],
operation: ['get'],
},
},
},
makeSimpleField('tag', 'get'),
// ----------------------------------------
// tag: getAll
// ----------------------------------------
{
displayName: 'Return All',
name: 'returnAll',
type: 'boolean',
default: false,
description: 'Whether to return all results or only up to a given limit',
displayOptions: {
show: {
resource: ['tag'],
operation: ['getAll'],
},
},
},
{
displayName: 'Limit',
name: 'limit',
type: 'number',
default: 50,
description: 'Max number of results to return',
typeOptions: {
minValue: 1,
},
displayOptions: {
show: {
resource: ['tag'],
operation: ['getAll'],
returnAll: [false],
},
},
},
makeSimpleField('tag', 'getAll'),
];
@@ -0,0 +1,7 @@
export * from './AttendanceDescription';
export * from './EventDescription';
export * from './PersonDescription';
export * from './PersonTagDescription';
export * from './PetitionDescription';
export * from './SignatureDescription';
export * from './TagDescription';