# nodes

node_type: n8n-nodes-base.Msg91
name: Msg91
display_name: MSG91
description: Sends transactional SMS via MSG91
category: transform
icon: file:msg91.png
code_hash: 2f2d50fba570ecb3206112e2444333e5650effbec0b672b39030df8621bfce89
documentation_url: https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.msg91
example_parameters: {}
properties_schema: []
package_name: n8n-nodes-base
version: 1.0
extracted_at: 2025-06-08 09:18:17
updated_at: 2025-06-08 09:18:17
source_code:
  "use strict";
  Object.defineProperty(exports, "__esModule", { value: true });
  exports.Msg91 = void 0;
  const n8n_workflow_1 = require("n8n-workflow");
  const GenericFunctions_1 = require("./GenericFunctions");
  class Msg91 {
      constructor() {
          this.description = {
              displayName: 'MSG91',
              name: 'msg91',
              icon: 'file:msg91.png',
              group: ['transform'],
              version: 1,
              subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
              description: 'Sends transactional SMS via MSG91',
              defaults: {
                  name: 'MSG91',
              },
              inputs: ['main'],
              outputs: ['main'],
              credentials: [
                  {
                      name: 'msg91Api',
                      required: true,
                  },
              ],
              properties: [
                  {
                      displayName: 'Resource',
                      name: 'resource',
                      type: 'options',
                      noDataExpression: true,
                      options: [
                          {
                              name: 'SMS',
                              value: 'sms',
                          },
                      ],
                      default: 'sms',
                  },
                  {
                      displayName: 'Operation',
                      name: 'operation',
                      type: 'options',
                      noDataExpression: true,
                      displayOptions: {
                          show: {
                              resource: ['sms'],
                          },
                      },
                      options: [
                          {
                              name: 'Send',
                              value: 'send',
                              description: 'Send SMS',
                              action: 'Send an SMS',
                          },
                      ],
                      default: 'send',
                  },
                  {
                      displayName: 'Sender ID',
                      name: 'from',
                      type: 'string',
                      default: '',
                      placeholder: '4155238886',
                      required: true,
                      displayOptions: {
                          show: {
                              operation: ['send'],
                              resource: ['sms'],
                          },
                      },
                      description: 'The number from which to send the message',
                  },
                  {
                      displayName: 'To',
                      name: 'to',
                      type: 'string',
                      default: '',
                      placeholder: '+14155238886',
                      required: true,
                      displayOptions: {
                          show: {
                              operation: ['send'],
                              resource: ['sms'],
                          },
                      },
                      description: 'The number, with coutry code, to which to send the message',
                  },
                  {
                      displayName: 'Message',
                      name: 'message',
                      type: 'string',
                      default: '',
                      required: true,
                      displayOptions: {
                          show: {
                              operation: ['send'],
                              resource: ['sms'],
                          },
                      },
                      description: 'The message to send',
                  },
              ],
          };
      }
      async execute() {
          const items = this.getInputData();
          const returnData = [];
          let operation;
          let resource;
          let body;
          let qs;
          let requestMethod;
          let endpoint;
          for (let i = 0; i < items.length; i++) {
              endpoint = '';
              body = {};
              qs = {};
              resource = this.getNodeParameter('resource', i);
              operation = this.getNodeParameter('operation', i);
              if (resource === 'sms') {
                  if (operation === 'send') {
                      requestMethod = 'GET';
                      endpoint = '/sendhttp.php';
                      qs.route = 4;
                      qs.country = 0;
                      qs.sender = this.getNodeParameter('from', i);
                      qs.mobiles = this.getNodeParameter('to', i);
                      qs.message = this.getNodeParameter('message', i);
                  }
                  else {
                      throw new n8n_workflow_1.NodeOperationError(this.getNode(), `The operation "${operation}" is not known!`, { itemIndex: i });
                  }
              }
              else {
                  throw new n8n_workflow_1.NodeOperationError(this.getNode(), `The resource "${resource}" is not known!`, {
                      itemIndex: i,
                  });
              }
              const responseData = await GenericFunctions_1.msg91ApiRequest.call(this, requestMethod, endpoint, body, qs);
              returnData.push({ requestId: responseData });
          }
          return [this.helpers.returnJsonArray(returnData)];
      }
  }
  exports.Msg91 = Msg91;
  //# sourceMappingURL=Msg91.node.js.map

documentation_markdown:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: MSG91 node documentation
  description: Learn how to use the MSG91 node in n8n. Follow technical documentation to integrate MSG91 node into your workflows.
  contentType: [integration, reference]
  ---

  # MSG91 node

  Use the MSG91 node to automate work in MSG91, and integrate MSG91 with other applications. n8n supports sending SMS with MSG91.

  On this page, you'll find a list of operations the MSG91 node supports and links to more resources.

  /// note | Credentials
  Refer to [MSG91 credentials](/integrations/builtin/credentials/msg91.md) for guidance on setting up authentication. 
  ///

  ## Operations

  * SMS
      * Send SMS

  ## Templates and examples

  <!-- see https://www.notion.so/n8n/Pull-in-templates-for-the-integrations-pages-37c716837b804d30a33b47475f6e3780 -->
  [[ templatesWidget(page.title, 'msg91') ]]

  ## Find your Sender ID

  1. Log in to your MSG91 dashboard.
  2. Select **Sender Id** in the left panel.
  3. If you don't already have one, select **Add Sender Id +**, fill in the details, and select **Save Sender Id**.

example_workflow:
  {"nodes":[{"parameters":{},"type":"n8n-nodes-base.node","typeVersion":1,"position":[220,120],"id":"84f21ace-640e-4568-8fbf-3ff652026d19","name":"Node"}],"connections":{"Node":{"main":[[]]}},"pinData":{},"meta":{"templateCredsSetupCompleted":true,"instanceId":"1bcc312c86bd079814ae08f437e0278d279689a207b617171ecfe0898457fc57"}}


node_type: n8n-nodes-base.N8n
name: N8n
display_name: n8n
description: Handle events and perform actions on your n8n instance
category: transform
icon: file:n8n.svg
code_hash: 25e366d56d1bd2a332ffffad191bc91b827011483a2ac2e0ca54ae1573799d5f
documentation_url: https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.debughelper
example_parameters: {}
properties_schema: []
package_name: n8n-nodes-base
version: 1.0
extracted_at: 2025-06-08 09:18:17
updated_at: 2025-06-08 09:18:17
source_code:
  "use strict";
  Object.defineProperty(exports, "__esModule", { value: true });
  exports.N8n = void 0;
  const AuditDescription_1 = require("./AuditDescription");
  const CredentialDescription_1 = require("./CredentialDescription");
  const ExecutionDescription_1 = require("./ExecutionDescription");
  const WorkflowDescription_1 = require("./WorkflowDescription");
  const WorkflowLocator_1 = require("./WorkflowLocator");
  class N8n {
      constructor() {
          this.description = {
              displayName: 'n8n',
              name: 'n8n',
              icon: 'file:n8n.svg',
              group: ['transform'],
              version: 1,
              subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
              description: 'Handle events and perform actions on your n8n instance',
              defaults: {
                  name: 'n8n',
              },
              inputs: ['main'],
              outputs: ['main'],
              credentials: [
                  {
                      name: 'n8nApi',
                      required: true,
                  },
              ],
              requestDefaults: {
                  returnFullResponse: true,
                  baseURL: '={{ $credentials.baseUrl.replace(new RegExp("/$"), "") }}',
                  headers: {
                      Accept: 'application/json',
                      'Content-Type': 'application/json',
                  },
              },
              properties: [
                  {
                      displayName: 'Resource',
                      name: 'resource',
                      type: 'options',
                      noDataExpression: true,
                      options: [
                          {
                              name: 'Audit',
                              value: 'audit',
                          },
                          {
                              name: 'Credential',
                              value: 'credential',
                          },
                          {
                              name: 'Execution',
                              value: 'execution',
                          },
                          {
                              name: 'Workflow',
                              value: 'workflow',
                          },
                      ],
                      default: 'workflow',
                  },
                  ...AuditDescription_1.auditOperations,
                  ...AuditDescription_1.auditFields,
                  ...CredentialDescription_1.credentialOperations,
                  ...CredentialDescription_1.credentialFields,
                  ...ExecutionDescription_1.executionOperations,
                  ...ExecutionDescription_1.executionFields,
                  ...WorkflowDescription_1.workflowOperations,
                  ...WorkflowDescription_1.workflowFields,
              ],
          };
          this.methods = {
              listSearch: {
                  searchWorkflows: WorkflowLocator_1.searchWorkflows,
              },
          };
      }
  }
  exports.N8n = N8n;
  //# sourceMappingURL=N8n.node.js.map

documentation_markdown:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Debug Helper
  description: Documentation for the Debug Helper node in n8n, a workflow automation platform. Includes guidance on usage, and links to examples.
  contentType: [integration, reference]
  priority: medium
  ---

  # Debug Helper

  Use the Debug Helper node to trigger different error types or generate random datasets to help test n8n workflows.

  ## Operations

  Define the operation by selecting the **Category**:

  * **Do Nothing**: Don't do anything.
  * [**Throw Error**](#throw-error): Throw an error with the specified type and message.
  * [**Out Of Memory**](#out-of-memory): Generate a specific memory size to simulate being out of memory.
  * [**Generate Random Data**](#generate-random-data): Generate some random data in a selected format.

  ## Node parameters

  The node parameters depend on the **Category** selected. The **Do Nothing** Category has no other parameters.

  ### Throw Error

  * **Error Type**: Select the type of error to throw. Choose from:
  	* **NodeApiError**
  	* **NodeOperationError**
  	* **Error**
  * **Error Message**: Enter the error message to throw.

  ### Out Of Memory

  The Out of Memory Category adds one parameter, the **Memory Size to Generate**. Enter the approximate amount of memory to generate.

  ### Generate Random Data

  * **Data Type**: Choose the type of random data you'd like to generate. Options include:
  	* **Address**
  	* **Coordinates**
  	* **Credit Card**
  	* **Email**
  	* **IPv4**
  	* **IPv6**
  	* **MAC**
  	* **Nanoids**: If you select this data type, you'll also need to enter:
  		* **Nanoid Alphabet**: The alphabet the generator will use to generate the nanoids.
  		* **Nanoid Length**: The length of each nanoid.
  	* **URL**
  	* **User Data**
  	* **UUID**
  	* **Version**
  * **Seed**: If you'd like to generate the data using a specific seed, enter it here. This ensures the data gets generated consistently. If you'd rather use random data generation, leave this field empty.
  * **Number of Items to Generate**: Enter the number of random items you'd like to generate.
  * **Output as Single Array**: Whether to generate the data as a single array (turned on) or multiple items (turned off).

  ## Templates and examples

  <!-- see https://www.notion.so/n8n/Pull-in-templates-for-the-integrations-pages-37c716837b804d30a33b47475f6e3780 -->
  [[ templatesWidget(page.title, 'debughelper') ]]

example_workflow:
  {"nodes":[{"parameters":{},"type":"n8n-nodes-base.node","typeVersion":1,"position":[220,120],"id":"ddabd98f-8282-4560-8264-02db810891ef","name":"Node"}],"connections":{"Node":{"main":[[]]}},"pinData":{},"meta":{"templateCredsSetupCompleted":true,"instanceId":"e48890176a412187d2e3c5b4e221b0f9e8edb101df5a23fe2425f93f1d05f60d"}}


node_type: n8n-nodes-base.N8nTrainingCustomerDatastore
name: N8nTrainingCustomerDatastore
display_name: Customer Datastore (n8n training)
description: Dummy node used for n8n training
category: transform
icon: file:n8nTrainingCustomerDatastore.svg
code_hash: 1eace80e610dd97823a1e152f5ba5308299a1e2b8feaf724095e37ce1c7c92cc
documentation_url: https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.n8ntrainingcustomerdatastore
example_parameters: {}
properties_schema: []
package_name: n8n-nodes-base
version: 1.0
extracted_at: 2025-06-08 09:18:18
updated_at: 2025-06-08 09:18:18
source_code:
  "use strict";
  Object.defineProperty(exports, "__esModule", { value: true });
  exports.N8nTrainingCustomerDatastore = void 0;
  const data = [
      {
          id: '23423532',
          name: 'Jay Gatsby',
          email: 'gatsby@west-egg.com',
          notes: 'Keeps asking about a green light??',
          country: 'US',
          created: '1925-04-10',
      },
      {
          id: '23423533',
          name: 'José Arcadio Buendía',
          email: 'jab@macondo.co',
          notes: 'Lots of people named after him. Very confusing',
          country: 'CO',
          created: '1967-05-05',
      },
      {
          id: '23423534',
          name: 'Max Sendak',
          email: 'info@in-and-out-of-weeks.org',
          notes: 'Keeps rolling his terrible eyes',
          country: 'US',
          created: '1963-04-09',
      },
      {
          id: '23423535',
          name: 'Zaphod Beeblebrox',
          email: 'captain@heartofgold.com',
          notes: 'Felt like I was talking to more than one person',
          country: null,
          created: '1979-10-12',
      },
      {
          id: '23423536',
          name: 'Edmund Pevensie',
          email: 'edmund@narnia.gov',
          notes: 'Passionate sailor',
          country: 'UK',
          created: '1950-10-16',
      },
  ];
  class N8nTrainingCustomerDatastore {
      constructor() {
          this.description = {
              displayName: 'Customer Datastore (n8n training)',
              name: 'n8nTrainingCustomerDatastore',
              icon: 'file:n8nTrainingCustomerDatastore.svg',
              group: ['transform'],
              version: 1,
              subtitle: '={{$parameter["operation"]}}',
              description: 'Dummy node used for n8n training',
              defaults: {
                  name: 'Customer Datastore (n8n training)',
              },
              inputs: ['main'],
              outputs: ['main'],
              properties: [
                  {
                      displayName: 'Operation',
                      name: 'operation',
                      type: 'options',
                      noDataExpression: true,
                      options: [
                          {
                              name: 'Get One Person',
                              value: 'getOnePerson',
                          },
                          {
                              name: 'Get All People',
                              value: 'getAllPeople',
                          },
                      ],
                      default: 'getOnePerson',
                  },
                  {
                      displayName: 'Return All',
                      name: 'returnAll',
                      type: 'boolean',
                      displayOptions: {
                          show: {
                              operation: ['getAllPeople'],
                          },
                      },
                      default: false,
                      description: 'Whether to return all results or only up to a given limit',
                  },
                  {
                      displayName: 'Limit',
                      name: 'limit',
                      type: 'number',
                      displayOptions: {
                          show: {
                              operation: ['getAllPeople'],
                              returnAll: [false],
                          },
                      },
                      typeOptions: {
                          minValue: 1,
                          maxValue: 10,
                      },
                      default: 5,
                      description: 'Max number of results to return',
                  },
              ],
          };
      }
      async execute() {
          const items = this.getInputData();
          const returnData = [];
          const length = items.length;
          const operation = this.getNodeParameter('operation', 0);
          let responseData;
          for (let i = 0; i < length; i++) {
              if (operation === 'getOnePerson') {
                  responseData = data[0];
              }
              if (operation === 'getAllPeople') {
                  const returnAll = this.getNodeParameter('returnAll', i);
                  if (returnAll) {
                      responseData = data;
                  }
                  else {
                      const limit = this.getNodeParameter('limit', i);
                      responseData = data.slice(0, limit);
                  }
              }
              if (Array.isArray(responseData)) {
                  const executionData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray(responseData), { itemData: { item: i } });
                  returnData.push.apply(returnData, executionData);
              }
              else if (responseData !== undefined) {
                  returnData.push({ json: responseData });
              }
          }
          return [returnData];
      }
  }
  exports.N8nTrainingCustomerDatastore = N8nTrainingCustomerDatastore;
  //# sourceMappingURL=N8nTrainingCustomerDatastore.node.js.map

documentation_markdown:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Customer Datastore (n8n Training) node documentation
  description: Learn how to use the Customer Datastore (n8n Training) node in n8n. Follow technical documentation to integrate Customer Datastore (n8n Training) node into your workflows.
  contentType: [integration, reference]
  priority: medium
  ---

  # Customer Datastore (n8n Training) node

  Use this node only for the n8n new user onboarding tutorial. It provides dummy data for testing purposes and has no further functionality.

example_workflow:
  {"nodes":[{"parameters":{},"type":"n8n-nodes-base.node","typeVersion":1,"position":[220,120],"id":"ccd0ddc4-d4d0-4b44-ad29-64d2f19959f0","name":"Node"}],"connections":{"Node":{"main":[[]]}},"pinData":{},"meta":{"templateCredsSetupCompleted":true,"instanceId":"ba0a79615237e4770318a69edcecb41f70348a6aa6b751515a0f97ff4922faf3"}}


node_type: n8n-nodes-base.N8nTrainingCustomerMessenger
name: N8nTrainingCustomerMessenger
display_name: Customer Messenger (n8n training)
description: Dummy node used for n8n training
category: transform
icon: file:n8nTrainingCustomerMessenger.svg
code_hash: 9d9edad934e5d070c2f6c86b293bbc30e6ffe3836a7266c1abf0f68e9d89e0dc
documentation_url: https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.n8ntrainingcustomermessenger
example_parameters: {}
properties_schema: []
package_name: n8n-nodes-base
version: 1.0
extracted_at: 2025-06-08 09:18:18
updated_at: 2025-06-08 09:18:18
source_code:
  "use strict";
  Object.defineProperty(exports, "__esModule", { value: true });
  exports.N8nTrainingCustomerMessenger = void 0;
  class N8nTrainingCustomerMessenger {
      constructor() {
          this.description = {
              displayName: 'Customer Messenger (n8n training)',
              name: 'n8nTrainingCustomerMessenger',
              icon: 'file:n8nTrainingCustomerMessenger.svg',
              group: ['transform'],
              version: 1,
              description: 'Dummy node used for n8n training',
              defaults: {
                  name: 'Customer Messenger (n8n training)',
              },
              inputs: ['main'],
              outputs: ['main'],
              properties: [
                  {
                      displayName: 'Customer ID',
                      name: 'customerId',
                      type: 'string',
                      required: true,
                      default: '',
                  },
                  {
                      displayName: 'Message',
                      name: 'message',
                      type: 'string',
                      required: true,
                      typeOptions: {
                          rows: 4,
                      },
                      default: '',
                  },
              ],
          };
      }
      async execute() {
          const items = this.getInputData();
          const returnData = [];
          const length = items.length;
          let responseData;
          for (let i = 0; i < length; i++) {
              const customerId = this.getNodeParameter('customerId', i);
              const message = this.getNodeParameter('message', i);
              responseData = { output: `Sent message to customer ${customerId}:  ${message}` };
              const executionData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray(responseData), { itemData: { item: i } });
              returnData.push(...executionData);
          }
          return [returnData];
      }
  }
  exports.N8nTrainingCustomerMessenger = N8nTrainingCustomerMessenger;
  //# sourceMappingURL=N8nTrainingCustomerMessenger.node.js.map

documentation_markdown:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Customer Messenger (n8n Training) node documentation
  description: Learn how to use the Customer Messenger (n8n Training) node in n8n. Follow technical documentation to integrate Customer Messenger (n8n Training) node into your workflows.
  contentType: [integration, reference]
  priority: medium
  ---

  # Customer Messenger (n8n Training) node

  Use this node only for the n8n new user onboarding tutorial. It provides no further functionality.

example_workflow:
  {"nodes":[{"parameters":{},"type":"n8n-nodes-base.node","typeVersion":1,"position":[220,120],"id":"c26b5f74-967d-4124-808d-385a7e537ada","name":"Node"}],"connections":{"Node":{"main":[[]]}},"pinData":{},"meta":{"templateCredsSetupCompleted":true,"instanceId":"a3ebda4f5c49a530915bbf86fa695c559bd650a24e0f707aa6d034af2bee967e"}}


node_type: n8n-nodes-base.N8nTrigger
name: N8nTrigger
display_name: n8n Trigger
description: Handle events and perform actions on your n8n instance
category: trigger
icon: file:n8nTrigger.svg
code_hash: 49ad2807ae9b686c67c1b63651607ff4bf9d2730636ac4ee6b1ee6dac7520e05
documentation_url: https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.n8ntrigger
example_parameters: {}
properties_schema: []
package_name: n8n-nodes-base
version: 1.0
extracted_at: 2025-06-08 09:18:18
updated_at: 2025-06-08 09:18:18
source_code:
  "use strict";
  Object.defineProperty(exports, "__esModule", { value: true });
  exports.N8nTrigger = void 0;
  class N8nTrigger {
      constructor() {
          this.description = {
              displayName: 'n8n Trigger',
              name: 'n8nTrigger',
              icon: 'file:n8nTrigger.svg',
              group: ['trigger'],
              version: 1,
              description: 'Handle events and perform actions on your n8n instance',
              eventTriggerDescription: '',
              mockManualExecution: true,
              defaults: {
                  name: 'n8n Trigger',
              },
              inputs: [],
              outputs: ['main'],
              properties: [
                  {
                      displayName: 'Events',
                      name: 'events',
                      type: 'multiOptions',
                      required: true,
                      default: [],
                      description: 'Specifies under which conditions an execution should happen: <b>Instance started</b>: Triggers when this n8n instance is started or re-started',
                      options: [
                          {
                              name: 'Instance Started',
                              value: 'init',
                              description: 'Triggers when this n8n instance is started or re-started',
                          },
                      ],
                  },
              ],
          };
      }
      async trigger() {
          const events = this.getNodeParameter('events', []);
          const activationMode = this.getActivationMode();
          if (events.includes(activationMode)) {
              let event;
              if (activationMode === 'init') {
                  event = 'Instance started';
              }
              this.emit([
                  this.helpers.returnJsonArray([
                      { event, timestamp: new Date().toISOString(), workflow_id: this.getWorkflow().id },
                  ]),
              ]);
          }
          const manualTriggerFunction = async () => {
              this.emit([
                  this.helpers.returnJsonArray([
                      {
                          event: 'Manual execution',
                          timestamp: new Date().toISOString(),
                          workflow_id: this.getWorkflow().id,
                      },
                  ]),
              ]);
          };
          return {
              manualTriggerFunction,
          };
      }
  }
  exports.N8nTrigger = N8nTrigger;
  //# sourceMappingURL=N8nTrigger.node.js.map

documentation_markdown:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: n8n Trigger node documentation
  description: Learn how to use the n8n Trigger node in n8n. Follow technical documentation to integrate n8n Trigger node into your workflows.
  contentType: [integration, reference]
  priority: medium
  ---

  # n8n Trigger node

  The n8n Trigger node triggers when the current workflow updates or activates, or when the n8n instance starts or restarts. You can use the n8n Trigger node to notify when these events occur.

  ## Node parameters

  The node includes a single parameter to identify the **Events** that should trigger it. Choose from these events:

  - **Active Workflow Updated**: If you select this event, the node triggers when this workflow is updated.
  - **Instance started**: If you select this event, the node triggers when the n8n instance starts or restarts.
  - **Workflow Activated**: If you select this event, the node triggers when this workflow is activated.

  You can select one or more of these events.

  ## Templates and examples

  <!-- see https://www.notion.so/n8n/Pull-in-templates-for-the-integrations-pages-37c716837b804d30a33b47475f6e3780 -->
  [[ templatesWidget(page.title, 'n8n-trigger') ]]

example_workflow:
  {"nodes":[{"parameters":{},"type":"n8n-nodes-base.node","typeVersion":1,"position":[220,120],"id":"74d7dfff-77fd-490e-963d-28ca968a6759","name":"Node"}],"connections":{"Node":{"main":[[]]}},"pinData":{},"meta":{"templateCredsSetupCompleted":true,"instanceId":"f6c1566bd2308bc2677ea429b0a37dbd860664b00fc5382e93d351a1c68e41ae"}}


node_type: n8n-nodes-base.Nasa
name: Nasa
display_name: NASA
description: Retrieve data from the NASA API
category: transform
icon: file:nasa.png
code_hash: f7745392ff0a92efee6e82a6d34f397404666cfd4c56ac723875c1b6aa5d0589
documentation_url: https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.nasa
example_parameters: {}
properties_schema: []
package_name: n8n-nodes-base
version: 1.0
extracted_at: 2025-06-08 09:18:18
updated_at: 2025-06-08 09:18:18
source_code:
  "use strict";
  var __importDefault = (this && this.__importDefault) || function (mod) {
      return (mod && mod.__esModule) ? mod : { "default": mod };
  };
  Object.defineProperty(exports, "__esModule", { value: true });
  exports.Nasa = void 0;
  const n8n_workflow_1 = require("n8n-workflow");
  const GenericFunctions_1 = require("./GenericFunctions");
  const moment_1 = __importDefault(require("moment"));
  class Nasa {
      constructor() {
          this.description = {
              displayName: 'NASA',
              name: 'nasa',
              icon: 'file:nasa.png',
              group: ['transform'],
              version: 1,
              subtitle: '={{$parameter["operation"] + ":" + $parameter["resource"]}}',
              description: 'Retrieve data from the NASA API',
              defaults: {
                  name: 'NASA',
              },
              inputs: ['main'],
              outputs: ['main'],
              credentials: [
                  {
                      name: 'nasaApi',
                      required: true,
                  },
              ],
              properties: [
                  {
                      displayName: 'Resource',
                      name: 'resource',
                      type: 'options',
                      noDataExpression: true,
                      options: [
                          {
                              name: 'Asteroid Neo-Browse',
                              value: 'asteroidNeoBrowse',
                          },
                          {
                              name: 'Asteroid Neo-Feed',
                              value: 'asteroidNeoFeed',
                          },
                          {
                              name: 'Asteroid Neo-Lookup',
                              value: 'asteroidNeoLookup',
                          },
                          {
                              name: 'Astronomy Picture of the Day',
                              value: 'astronomyPictureOfTheDay',
                          },
                          {
                              name: 'DONKI Coronal Mass Ejection',
                              value: 'donkiCoronalMassEjection',
                          },
                          {
                              name: 'DONKI High Speed Stream',
                              value: 'donkiHighSpeedStream',
                          },
                          {
                              name: 'DONKI Interplanetary Shock',
                              value: 'donkiInterplanetaryShock',
                          },
                          {
                              name: 'DONKI Magnetopause Crossing',
                              value: 'donkiMagnetopauseCrossing',
                          },
                          {
                              name: 'DONKI Notification',
                              value: 'donkiNotifications',
                          },
                          {
                              name: 'DONKI Radiation Belt Enhancement',
                              value: 'donkiRadiationBeltEnhancement',
                          },
                          {
                              name: 'DONKI Solar Energetic Particle',
                              value: 'donkiSolarEnergeticParticle',
                          },
                          {
                              name: 'DONKI Solar Flare',
                              value: 'donkiSolarFlare',
                          },
                          {
                              name: 'DONKI WSA+EnlilSimulation',
                              value: 'donkiWsaEnlilSimulation',
                          },
                          {
                              name: 'Earth Asset',
                              value: 'earthAssets',
                          },
                          {
                              name: 'Earth Imagery',
                              value: 'earthImagery',
                          },
                      ],
                      default: 'astronomyPictureOfTheDay',
                  },
                  {
                      displayName: 'Operation',
                      name: 'operation',
                      type: 'options',
                      noDataExpression: true,
                      displayOptions: {
                          show: {
                              resource: ['astronomyPictureOfTheDay'],
                          },
                      },
                      options: [
                          {
                              name: 'Get',
                              value: 'get',
                              description: 'Get the Astronomy Picture of the Day',
                              action: 'Get the astronomy picture of the day',
                          },
                      ],
                      default: 'get',
                  },
                  {
                      displayName: 'Operation',
                      name: 'operation',
                      type: 'options',
                      noDataExpression: true,
                      displayOptions: {
                          show: {
                              resource: ['asteroidNeoFeed'],
                          },
                      },
                      options: [
                          {
                              name: 'Get',
                              value: 'get',
                              description: 'Retrieve a list of asteroids based on their closest approach date to Earth',
                              action: 'Get an asteroid neo feed',
                          },
                      ],
                      default: 'get',
                  },
                  {
                      displayName: 'Operation',
                      name: 'operation',
                      type: 'options',
                      noDataExpression: true,
                      displayOptions: {
                          show: {
                              resource: ['asteroidNeoLookup'],
                          },
                      },
                      options: [
                          {
                              name: 'Get',
                              value: 'get',
                              description: 'Look up an asteroid based on its NASA SPK-ID',
                              action: 'Get an asteroid neo lookup',
                          },
                      ],
                      default: 'get',
                  },
                  {
                      displayName: 'Operation',
                      name: 'operation',
                      type: 'options',
                      noDataExpression: true,
                      displayOptions: {
                          show: {
                              resource: ['asteroidNeoBrowse'],
                          },
                      },
                      options: [
                          {
                              name: 'Get Many',
                              value: 'getAll',
                              description: 'Browse the overall asteroid dataset',
                              action: 'Get many asteroid neos',
                          },
                      ],
                      default: 'getAll',
                  },
                  {
                      displayName: 'Operation',
                      name: 'operation',
                      type: 'options',
                      noDataExpression: true,
                      displayOptions: {
                          show: {
                              resource: ['donkiCoronalMassEjection'],
                          },
                      },
                      options: [
                          {
                              name: 'Get',
                              value: 'get',
                              description: 'Retrieve DONKI coronal mass ejection data',
                              action: 'Get a DONKI coronal mass ejection',
                          },
                      ],
                      default: 'get',
                  },
                  {
                      displayName: 'Operation',
                      name: 'operation',
                      type: 'options',
                      noDataExpression: true,
                      displayOptions: {
                          show: {
                              resource: ['donkiGeomagneticStorm'],
                          },
                      },
                      options: [
                          {
                              name: 'Get',
                              value: 'get',
                              description: 'Retrieve DONKI geomagnetic storm data',
                              action: 'Get a DONKI geomagnetic storm',
                          },
                      ],
                      default: 'get',
                  },
                  {
                      displayName: 'Operation',
                      name: 'operation',
                      type: 'options',
                      noDataExpression: true,
                      displayOptions: {
                          show: {
                              resource: ['donkiInterplanetaryShock'],
                          },
                      },
                      options: [
                          {
                              name: 'Get',
                              value: 'get',
                              description: 'Retrieve DONKI interplanetary shock data',
                              action: 'Get a DONKI interplanetary shock',
                          },
                      ],
                      default: 'get',
                  },
                  {
                      displayName: 'Operation',
                      name: 'operation',
                      type: 'options',
                      noDataExpression: true,
                      displayOptions: {
                          show: {
                              resource: ['donkiSolarFlare'],
                          },
                      },
                      options: [
                          {
                              name: 'Get',
                              value: 'get',
                              description: 'Retrieve DONKI solar flare data',
                              action: 'Get a DONKI solar flare',
                          },
                      ],
                      default: 'get',
                  },
                  {
                      displayName: 'Operation',
                      name: 'operation',
                      type: 'options',
                      noDataExpression: true,
                      displayOptions: {
                          show: {
                              resource: ['donkiSolarEnergeticParticle'],
                          },
                      },
                      options: [
                          {
                              name: 'Get',
                              value: 'get',
                              description: 'Retrieve DONKI solar energetic particle data',
                              action: 'Get a DONKI solar energetic particle',
                          },
                      ],
                      default: 'get',
                  },
                  {
                      displayName: 'Operation',
                      name: 'operation',
                      type: 'options',
                      noDataExpression: true,
                      displayOptions: {
                          show: {
                              resource: ['donkiMagnetopauseCrossing'],
                          },
                      },
                      options: [
                          {
                              name: 'Get',
                              value: 'get',
                              description: 'Retrieve data on DONKI magnetopause crossings',
                              action: 'Get a DONKI magnetopause crossing',
                          },
                      ],
                      default: 'get',
                  },
                  {
                      displayName: 'Operation',
                      name: 'operation',
                      type: 'options',
                      noDataExpression: true,
                      displayOptions: {
                          show: {
                              resource: ['donkiRadiationBeltEnhancement'],
                          },
                      },
                      options: [
                          {
                              name: 'Get',
                              value: 'get',
                              description: 'Retrieve DONKI radiation belt enhancement data',
                              action: 'Get a DONKI radiation belt enhancement',
                          },
                      ],
                      default: 'get',
                  },
                  {
                      displayName: 'Operation',
                      name: 'operation',
                      type: 'options',
                      noDataExpression: true,
                      displayOptions: {
                          show: {
                              resource: ['donkiHighSpeedStream'],
                          },
                      },
                      options: [
                          {
                              name: 'Get',
                              value: 'get',
                              description: 'Retrieve DONKI high speed stream data',
                              action: 'Get a DONKI high speed stream',
                          },
                      ],
                      default: 'get',
                  },
                  {
                      displayName: 'Operation',
                      name: 'operation',
                      type: 'options',
                      noDataExpression: true,
                      displayOptions: {
                          show: {
                              resource: ['donkiWsaEnlilSimulation'],
                          },
                      },
                      options: [
                          {
                              name: 'Get',
                              value: 'get',
                              description: 'Retrieve DONKI WSA+EnlilSimulation data',
                              action: 'Get a DONKI wsa enlil simulation',
                          },
                      ],
                      default: 'get',
                  },
                  {
                      displayName: 'Operation',
                      name: 'operation',
                      type: 'options',
                      noDataExpression: true,
                      displayOptions: {
                          show: {
                              resource: ['donkiNotifications'],
                          },
                      },
                      options: [
                          {
                              name: 'Get',
                              value: 'get',
                              description: 'Retrieve DONKI notifications data',
                              action: 'Get a DONKI notifications',
                          },
                      ],
                      default: 'get',
                  },
                  {
                      displayName: 'Operation',
                      name: 'operation',
                      type: 'options',
                      noDataExpression: true,
                      displayOptions: {
                          show: {
                              resource: ['earthImagery'],
                          },
                      },
                      options: [
                          {
                              name: 'Get',
                              value: 'get',
                              description: 'Retrieve Earth imagery',
                              action: 'Get Earth imagery',
                          },
                      ],
                      default: 'get',
                  },
                  {
                      displayName: 'Operation',
                      name: 'operation',
                      type: 'options',
                      noDataExpression: true,
                      displayOptions: {
                          show: {
                              resource: ['earthAssets'],
                          },
                      },
                      options: [
                          {
                              name: 'Get',
                              value: 'get',
                              description: 'Retrieve Earth assets',
                              action: 'Get Earth assets',
                          },
                      ],
                      default: 'get',
                  },
                  {
                      displayName: 'Operation',
                      name: 'operation',
                      type: 'options',
                      noDataExpression: true,
                      displayOptions: {
                          show: {
                              resource: ['inSightMarsWeatherService'],
                          },
                      },
                      options: [
                          {
                              name: 'Get',
                              value: 'get',
                              description: 'Retrieve Insight Mars Weather Service data',
                              action: 'Get Insight Mars Weather Service',
                          },
                      ],
                      default: 'get',
                  },
                  {
                      displayName: 'Operation',
                      name: 'operation',
                      type: 'options',
                      noDataExpression: true,
                      displayOptions: {
                          show: {
                              resource: ['imageAndVideoLibrary'],
                          },
                      },
                      options: [
                          {
                              name: 'Get',
                              value: 'get',
                              description: 'Retrieve Image and Video Library data',
                              action: 'Get image and video library data',
                          },
                      ],
                      default: 'get',
                  },
                  {
                      displayName: 'Operation',
                      name: 'operation',
                      type: 'options',
                      noDataExpression: true,
                      displayOptions: {
                          show: {
                              resource: ['techTransfer'],
                          },
                      },
                      options: [
                          {
                              name: 'Get',
                              value: 'get',
                              description: 'Retrieve TechTransfer data',
                              action: 'Get a TechTransfer data',
                          },
                      ],
                      default: 'get',
                  },
                  {
                      displayName: 'Operation',
                      name: 'operation',
                      type: 'options',
                      noDataExpression: true,
                      displayOptions: {
                          show: {
                              resource: ['twoLineElementSet'],
                          },
                      },
                      options: [
                          {
                              name: 'Get',
                              value: 'get',
                              description: 'Retrieve Two-Line Element Set data',
                              action: 'Get a Two-Line Element Set',
                          },
                      ],
                      default: 'get',
                  },
                  {
                      displayName: 'Asteroid ID',
                      name: 'asteroidId',
                      type: 'string',
                      required: true,
                      default: '',
                      placeholder: '3542519',
                      description: 'The ID of the asteroid to be returned',
                      displayOptions: {
                          show: {
                              resource: ['asteroidNeoLookup'],
                              operation: ['get'],
                          },
                      },
                  },
                  {
                      displayName: 'Additional Fields',
                      name: 'additionalFields',
                      type: 'collection',
                      placeholder: 'Add Field',
                      default: {},
                      displayOptions: {
                          show: {
                              resource: ['asteroidNeoLookup'],
                              operation: ['get'],
                          },
                      },
                      options: [
                          {
                              displayName: 'Include Close Approach Data',
                              name: 'includeCloseApproachData',
                              type: 'boolean',
                              default: false,
                              description: 'Whether to include all the close approach data in the asteroid lookup',
                          },
                      ],
                  },
                  {
                      displayName: 'Download Image',
                      name: 'download',
                      type: 'boolean',
                      displayOptions: {
                          show: {
                              resource: ['astronomyPictureOfTheDay'],
                          },
                      },
                      default: true,
                      description: 'By default just the URL of the image is returned. When set to true the image will be downloaded.',
                  },
                  {
                      displayName: 'Binary Property',
                      name: 'binaryPropertyName',
                      type: 'string',
                      required: true,
                      default: 'data',
                      displayOptions: {
                          show: {
                              operation: ['get'],
                              resource: ['astronomyPictureOfTheDay'],
                              download: [true],
                          },
                      },
                      description: 'Name of the binary property to which to write to',
                  },
                  {
                      displayName: 'Additional Fields',
                      name: 'additionalFields',
                      type: 'collection',
                      default: {},
                      placeholder: 'Add field',
                      displayOptions: {
                          show: {
                              resource: ['astronomyPictureOfTheDay'],
                              operation: ['get'],
                          },
                      },
                      options: [
                          {
                              displayName: 'Date',
                              name: 'date',
                              type: 'dateTime',
                              default: '',
                              placeholder: 'YYYY-MM-DD',
                          },
                      ],
                  },
                  {
                      displayName: 'Additional Fields',
                      name: 'additionalFields',
                      type: 'collection',
                      default: {},
                      placeholder: 'Add field',
                      displayOptions: {
                          show: {
                              resource: [
                                  'asteroidNeoFeed',
                                  'donkiCoronalMassEjection',
                                  'donkiGeomagneticStorm',
                                  'donkiSolarFlare',
                                  'donkiSolarEnergeticParticle',
                                  'donkiMagnetopauseCrossing',
                                  'donkiRadiationBeltEnhancement',
                                  'donkiHighSpeedStream',
                                  'donkiWsaEnlilSimulation',
                                  'donkiNotifications',
                              ],
                              operation: ['get'],
                          },
                      },
                      options: [
                          {
                              displayName: 'Start Date',
                              name: 'startDate',
                              type: 'dateTime',
                              default: '',
                              placeholder: 'YYYY-MM-DD',
                          },
                          {
                              displayName: 'End Date',
                              name: 'endDate',
                              type: 'dateTime',
                              default: '',
                              placeholder: 'YYYY-MM-DD',
                          },
                      ],
                  },
                  {
                      displayName: 'Additional Fields',
                      name: 'additionalFields',
                      type: 'collection',
                      default: {},
                      placeholder: 'Add field',
                      displayOptions: {
                          show: {
                              resource: ['donkiInterplanetaryShock'],
                              operation: ['get'],
                          },
                      },
                      options: [
                          {
                              displayName: 'Start Date',
                              name: 'startDate',
                              type: 'dateTime',
                              default: '',
                              placeholder: 'YYYY-MM-DD',
                          },
                          {
                              displayName: 'End Date',
                              name: 'endDate',
                              type: 'dateTime',
                              default: '',
                              placeholder: 'YYYY-MM-DD',
                          },
                          {
                              displayName: 'Location',
                              name: 'location',
                              type: 'options',
                              default: 'ALL',
                              description: 'The location of the geomagnetic storm',
                              options: [
                                  {
                                      name: 'All',
                                      value: 'ALL',
                                  },
                                  {
                                      name: 'Earth',
                                      value: 'earth',
                                  },
                                  {
                                      name: 'Messenger',
                                      value: 'MESSENGER',
                                  },
                                  {
                                      name: 'Stereo A',
                                      value: 'STEREO A',
                                  },
                                  {
                                      name: 'Stereo B',
                                      value: 'STEREO B',
                                  },
                              ],
                          },
                          {
                              displayName: 'Catalog',
                              name: 'catalog',
                              type: 'options',
                              default: 'ALL',
                              description: 'The catalog of the geomagnetic storm',
                              options: [
                                  {
                                      name: 'All',
                                      value: 'ALL',
                                  },
                                  {
                                      name: 'SWRC Catalog',
                                      value: 'SWRC_CATALOG',
                                  },
                                  {
                                      name: 'Winslow Messenger ICME Catalog',
                                      value: 'WINSLOW_MESSENGER_ICME_CATALOG',
                                  },
                              ],
                          },
                      ],
                  },
                  {
                      displayName: 'Latitude',
                      name: 'lat',
                      type: 'number',
                      default: '',
                      placeholder: '47.751076',
                      description: 'Latitude for the location of the image',
                      displayOptions: {
                          show: {
                              resource: ['earthImagery', 'earthAssets'],
                              operation: ['get'],
                          },
                      },
                  },
                  {
                      displayName: 'Longitude',
                      name: 'lon',
                      type: 'number',
                      default: '',
                      placeholder: '-120.740135',
                      description: 'Longitude for the location of the image',
                      displayOptions: {
                          show: {
                              resource: ['earthImagery', 'earthAssets'],
                              operation: ['get'],
                          },
                      },
                  },
                  {
                      displayName: 'Binary Property',
                      name: 'binaryPropertyName',
                      type: 'string',
                      required: true,
                      default: 'data',
                      displayOptions: {
                          show: {
                              operation: ['get'],
                              resource: ['earthImagery'],
                          },
                      },
                      description: 'Name of the binary property to which to write to',
                  },
                  {
                      displayName: 'Additional Fields',
                      name: 'additionalFields',
                      type: 'collection',
                      default: {},
                      placeholder: 'Add field',
                      displayOptions: {
                          show: {
                              resource: ['earthImagery', 'earthAssets'],
                              operation: ['get'],
                          },
                      },
                      options: [
                          {
                              displayName: 'Date',
                              name: 'date',
                              type: 'dateTime',
                              default: '',
                              placeholder: 'YYYY-MM-DD',
                              description: 'Date of the image',
                          },
                          {
                              displayName: 'Degrees',
                              name: 'dim',
                              type: 'number',
                              default: '',
                              placeholder: '0.025',
                              description: 'Width and height of the image in degrees',
                          },
                      ],
                  },
                  {
                      displayName: 'Return All',
                      name: 'returnAll',
                      type: 'boolean',
                      displayOptions: {
                          show: {
                              operation: ['getAll'],
                          },
                      },
                      default: false,
                      description: 'Whether to return all results or only up to a given limit',
                  },
                  {
                      displayName: 'Limit',
                      name: 'limit',
                      type: 'number',
                      typeOptions: {
                          minValue: 1,
                      },
                      description: 'Max number of results to return',
                      default: 20,
                      displayOptions: {
                          show: {
                              operation: ['getAll'],
                              returnAll: [false],
                          },
                      },
                  },
              ],
          };
      }
      async execute() {
          const items = this.getInputData();
          const returnData = [];
          const resource = this.getNodeParameter('resource', 0);
          const operation = this.getNodeParameter('operation', 0);
          let responseData;
          const qs = {};
          let returnAll = false;
          let propertyName = '';
          let download = false;
          for (let i = 0; i < items.length; i++) {
              try {
                  let endpoint = '';
                  let includeCloseApproachData = false;
                  let additionalFields;
                  try {
                      additionalFields = this.getNodeParameter('additionalFields', i);
                  }
                  catch (error) {
                      additionalFields = {};
                  }
                  if (resource === 'astronomyPictureOfTheDay') {
                      if (operation === 'get') {
                          endpoint = '/planetary/apod';
                          qs.date =
                              (0, moment_1.default)(additionalFields.date).format('YYYY-MM-DD') ||
                                  (0, moment_1.default)().format('YYYY-MM-DD');
                      }
                  }
                  if (resource === 'asteroidNeoFeed') {
                      if (operation === 'get') {
                          endpoint = '/neo/rest/v1/feed';
                          propertyName = 'near_earth_objects';
                          const currentDate = (0, moment_1.default)().format('YYYY-MM-DD');
                          qs.start_date =
                              (0, moment_1.default)(additionalFields.startDate).format('YYYY-MM-DD') || currentDate;
                          qs.end_date =
                              (0, moment_1.default)(additionalFields.endDate).format('YYYY-MM-DD') || currentDate;
                      }
                  }
                  if (resource === 'asteroidNeoLookup') {
                      if (operation === 'get') {
                          const asteroidId = this.getNodeParameter('asteroidId', i);
                          includeCloseApproachData = additionalFields.includeCloseApproachData;
                          endpoint = `/neo/rest/v1/neo/${asteroidId}`;
                      }
                      else {
                          throw new n8n_workflow_1.NodeOperationError(this.getNode(), `The operation '${operation}' is unknown!`, { itemIndex: i });
                      }
                  }
                  if (resource === 'asteroidNeoBrowse') {
                      if (operation === 'getAll') {
                          returnAll = this.getNodeParameter('returnAll', 0);
                          if (!returnAll) {
                              qs.size = this.getNodeParameter('limit', 0);
                          }
                          propertyName = 'near_earth_objects';
                          endpoint = '/neo/rest/v1/neo/browse';
                      }
                      else {
                          throw new n8n_workflow_1.NodeOperationError(this.getNode(), `The operation '${operation}' is unknown!`, { itemIndex: i });
                      }
                  }
                  if (resource.startsWith('donki')) {
                      if (additionalFields.startDate) {
                          qs.startDate = (0, moment_1.default)(additionalFields.startDate).format('YYYY-MM-DD');
                      }
                      else {
                          qs.startDate = (0, moment_1.default)().subtract(30, 'days').format('YYYY-MM-DD');
                      }
                      if (additionalFields.endDate) {
                          qs.endDate = (0, moment_1.default)(additionalFields.endDate).format('YYYY-MM-DD');
                      }
                      else {
                          qs.endDate = (0, moment_1.default)().format('YYYY-MM-DD');
                      }
                      if (resource === 'donkiCoronalMassEjection') {
                          if (operation === 'get') {
                              endpoint = '/DONKI/CME';
                          }
                      }
                      else if (resource === 'donkiGeomagneticStorm') {
                          if (operation === 'get') {
                              endpoint = '/DONKI/GST';
                          }
                      }
                      else if (resource === 'donkiInterplanetaryShock') {
                          if (operation === 'get') {
                              endpoint = '/DONKI/IPS';
                              qs.location = additionalFields.location || 'ALL';
                              qs.catalog = additionalFields.catalog || 'ALL';
                          }
                      }
                      else if (resource === 'donkiSolarFlare') {
                          if (operation === 'get') {
                              endpoint = '/DONKI/FLR';
                          }
                      }
                      else if (resource === 'donkiSolarEnergeticParticle') {
                          if (operation === 'get') {
                              endpoint = '/DONKI/SEP';
                          }
                      }
                      else if (resource === 'donkiMagnetopauseCrossing') {
                          if (operation === 'get') {
                              endpoint = '/DONKI/MPC';
                          }
                      }
                      else if (resource === 'donkiRadiationBeltEnhancement') {
                          if (operation === 'get') {
                              endpoint = '/DONKI/RBE';
                          }
                      }
                      else if (resource === 'donkiHighSpeedStream') {
                          if (operation === 'get') {
                              endpoint = '/DONKI/HSS';
                          }
                      }
                      else if (resource === 'donkiWsaEnlilSimulation') {
                          if (operation === 'get') {
                              endpoint = '/DONKI/WSAEnlilSimulations';
                          }
                      }
                      else if (resource === 'donkiNotifications') {
                          if (operation === 'get') {
                              endpoint = '/DONKI/notifications';
                              qs.type = additionalFields.type || 'all';
                          }
                      }
                  }
                  if (resource === 'earthImagery') {
                      if (operation === 'get') {
                          endpoint = '/planetary/earth/imagery';
                          qs.lat = this.getNodeParameter('lat', i);
                          qs.lon = this.getNodeParameter('lon', i);
                          qs.dim = additionalFields.dim || 0.025;
                          if (additionalFields.date) {
                              qs.date = (0, moment_1.default)(additionalFields.date).format('YYYY-MM-DD');
                          }
                          else {
                              qs.date = (0, moment_1.default)().format('YYYY-MM-DD');
                          }
                      }
                  }
                  if (resource === 'earthAssets') {
                      if (operation === 'get') {
                          endpoint = '/planetary/earth/assets';
                          qs.lat = this.getNodeParameter('lat', i);
                          qs.lon = this.getNodeParameter('lon', i);
                          qs.dim = additionalFields.dim || 0.025;
                          if (additionalFields.date) {
                              qs.date = (0, moment_1.default)(additionalFields.date).format('YYYY-MM-DD');
                          }
                      }
                      if (operation === 'get') {
                          endpoint = '/insight_weather/earth/imagery';
                          qs.feedtype = 'json';
                          qs.ver = '1.0';
                      }
                  }
                  if (returnAll) {
                      responseData = GenericFunctions_1.nasaApiRequestAllItems.call(this, propertyName, 'GET', endpoint, qs);
                  }
                  else {
                      responseData = await GenericFunctions_1.nasaApiRequest.call(this, 'GET', endpoint, qs);
                      if (propertyName !== '') {
                          responseData = responseData[propertyName];
                      }
                  }
                  if (resource === 'asteroidNeoLookup' && operation === 'get' && !includeCloseApproachData) {
                      delete responseData.close_approach_data;
                  }
                  if (resource === 'asteroidNeoFeed') {
                      const date = Object.keys(responseData)[0];
                      responseData = responseData[date];
                  }
                  if (resource === 'earthImagery') {
                      const binaryProperty = this.getNodeParameter('binaryPropertyName', i);
                      const data = await GenericFunctions_1.nasaApiRequest.call(this, 'GET', endpoint, qs, { encoding: null });
                      const newItem = {
                          json: items[i].json,
                          binary: {},
                      };
                      if (items[i].binary !== undefined) {
                          Object.assign(newItem.binary, items[i].binary);
                      }
                      items[i] = newItem;
                      items[i].binary[binaryProperty] = await this.helpers.prepareBinaryData(data);
                  }
                  if (resource === 'astronomyPictureOfTheDay') {
                      download = this.getNodeParameter('download', 0);
                      if (download) {
                          const binaryProperty = this.getNodeParameter('binaryPropertyName', i);
                          const data = await GenericFunctions_1.nasaApiRequest.call(this, 'GET', endpoint, qs, { encoding: null }, responseData.hdurl);
                          const filename = responseData.hdurl.split('/');
                          const newItem = {
                              json: items[i].json,
                              binary: {},
                          };
                          Object.assign(newItem.json, responseData);
                          if (items[i].binary !== undefined) {
                              Object.assign(newItem.binary, items[i].binary);
                          }
                          items[i] = newItem;
                          items[i].binary[binaryProperty] = await this.helpers.prepareBinaryData(data, filename[filename.length - 1]);
                      }
                  }
                  const executionData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray(responseData), { itemData: { item: i } });
                  returnData.push(...executionData);
              }
              catch (error) {
                  if (this.continueOnFail()) {
                      if (resource === 'earthImagery' && operation === 'get') {
                          items[i].json = { error: error.message };
                      }
                      else if (resource === 'astronomyPictureOfTheDay' && operation === 'get' && download) {
                          items[i].json = { error: error.message };
                      }
                      else {
                          const executionErrorData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } });
                          returnData.push(...executionErrorData);
                      }
                      continue;
                  }
                  throw error;
              }
          }
          if (resource === 'earthImagery' && operation === 'get') {
              return [items];
          }
          else if (resource === 'astronomyPictureOfTheDay' && operation === 'get' && download) {
              return [items];
          }
          else {
              return [returnData];
          }
      }
  }
  exports.Nasa = Nasa;
  //# sourceMappingURL=Nasa.node.js.map

documentation_markdown:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: NASA node documentation
  description: Learn how to use the NASA node in n8n. Follow technical documentation to integrate NASA node into your workflows.
  contentType: [integration, reference]
  priority: medium
  ---

  # NASA node

  Use the NASA node to automate work in NASA, and integrate NASA with other applications. n8n has built-in support for a wide range of NASA features, including retrieving imagery and data. 

  On this page, you'll find a list of operations the NASA node supports and links to more resources.

  /// note | Credentials
  Refer to [NASA credentials](/integrations/builtin/credentials/nasa.md) for guidance on setting up authentication. 
  ///

  --8<-- "_snippets/integrations/builtin/app-nodes/ai-tools.md"

  ## Operations

  * Astronomy Picture of the Day
      * Get the Astronomy Picture of the Day
  * Asteroid Neo-Feed
      * Retrieve a list of asteroids based on their closest approach date to Earth
  * Asteroid Neo-Lookup
      * Look up an asteroid based on its NASA SPK-ID
  * Asteroid Neo-Browse
      * Browse the overall asteroid dataset
  * DONKI Coronal Mass Ejection
      * Retrieve DONKI coronal mass ejection data
  * DONKI Interplanetary Shock
      * Retrieve DONKI interplanetary shock data
  * DONKI Solar Flare
      * Retrieve DONKI solar flare data
  * DONKI Solar Energetic Particle
      * Retrieve DONKI solar energetic particle data
  * DONKI Magnetopause Crossing
      * Retrieve data on DONKI magnetopause crossings
  * DONKI Radiation Belt Enhancement
      * Retrieve DONKI radiation belt enhancement data
  * DONKI High Speed Stream
      * Retrieve DONKI high speed stream data
  * DONKI WSA+EnlilSimulation
      * Retrieve DONKI WSA+EnlilSimulation data
  * DONKI Notifications
      * Retrieve DONKI notifications data
  * Earth Imagery
      * Retrieve Earth imagery
  * Earth Assets
      * Retrieve Earth assets

  ## Templates and examples

  <!-- see https://www.notion.so/n8n/Pull-in-templates-for-the-integrations-pages-37c716837b804d30a33b47475f6e3780 -->
  [[ templatesWidget(page.title, 'nasa') ]]

example_workflow:
  {"nodes":[{"parameters":{},"type":"n8n-nodes-base.node","typeVersion":1,"position":[220,120],"id":"1dae6b4f-730f-4636-a0bb-dfc5f0e785de","name":"Node"}],"connections":{"Node":{"main":[[]]}},"pinData":{},"meta":{"templateCredsSetupCompleted":true,"instanceId":"b9c08a1565bbed5507a689831236c045e7b39b2c550ae64bee94053316bf37aa"}}


node_type: n8n-nodes-base.NextCloud
name: NextCloud
display_name: Nextcloud
description: Access data on Nextcloud
category: input
icon: file:nextcloud.svg
code_hash: c16a62145bd04153b769ec1f971038acce59dcb941fc062aed1ae114514924ea
documentation_url: https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.nextcloud
example_parameters: {}
properties_schema: []
package_name: n8n-nodes-base
version: 1.0
extracted_at: 2025-06-08 09:18:18
updated_at: 2025-06-08 09:18:18
source_code:
  "use strict";
  Object.defineProperty(exports, "__esModule", { value: true });
  exports.NextCloud = void 0;
  const n8n_workflow_1 = require("n8n-workflow");
  const url_1 = require("url");
  const xml2js_1 = require("xml2js");
  const GenericFunctions_1 = require("./GenericFunctions");
  const utilities_1 = require("../../utils/utilities");
  class NextCloud {
      constructor() {
          this.description = {
              displayName: 'Nextcloud',
              name: 'nextCloud',
              icon: 'file:nextcloud.svg',
              group: ['input'],
              version: 1,
              subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
              description: 'Access data on Nextcloud',
              defaults: {
                  name: 'Nextcloud',
              },
              inputs: ['main'],
              outputs: ['main'],
              credentials: [
                  {
                      name: 'nextCloudApi',
                      required: true,
                      displayOptions: {
                          show: {
                              authentication: ['accessToken'],
                          },
                      },
                  },
                  {
                      name: 'nextCloudOAuth2Api',
                      required: true,
                      displayOptions: {
                          show: {
                              authentication: ['oAuth2'],
                          },
                      },
                  },
              ],
              properties: [
                  {
                      displayName: 'Authentication',
                      name: 'authentication',
                      type: 'options',
                      options: [
                          {
                              name: 'Access Token',
                              value: 'accessToken',
                          },
                          {
                              name: 'OAuth2',
                              value: 'oAuth2',
                          },
                      ],
                      default: 'accessToken',
                  },
                  {
                      displayName: 'Resource',
                      name: 'resource',
                      type: 'options',
                      noDataExpression: true,
                      options: [
                          {
                              name: 'File',
                              value: 'file',
                          },
                          {
                              name: 'Folder',
                              value: 'folder',
                          },
                          {
                              name: 'User',
                              value: 'user',
                          },
                      ],
                      default: 'file',
                  },
                  {
                      displayName: 'Operation',
                      name: 'operation',
                      type: 'options',
                      noDataExpression: true,
                      displayOptions: {
                          show: {
                              resource: ['file'],
                          },
                      },
                      options: [
                          {
                              name: 'Copy',
                              value: 'copy',
                              description: 'Copy a file',
                              action: 'Copy a file',
                          },
                          {
                              name: 'Delete',
                              value: 'delete',
                              description: 'Delete a file',
                              action: 'Delete a file',
                          },
                          {
                              name: 'Download',
                              value: 'download',
                              description: 'Download a file',
                              action: 'Download a file',
                          },
                          {
                              name: 'Move',
                              value: 'move',
                              description: 'Move a file',
                              action: 'Move a file',
                          },
                          {
                              name: 'Share',
                              value: 'share',
                              description: 'Share a file',
                              action: 'Share a file',
                          },
                          {
                              name: 'Upload',
                              value: 'upload',
                              description: 'Upload a file',
                              action: 'Upload a file',
                          },
                      ],
                      default: 'upload',
                  },
                  {
                      displayName: 'Operation',
                      name: 'operation',
                      type: 'options',
                      noDataExpression: true,
                      displayOptions: {
                          show: {
                              resource: ['folder'],
                          },
                      },
                      options: [
                          {
                              name: 'Copy',
                              value: 'copy',
                              description: 'Copy a folder',
                              action: 'Copy a folder',
                          },
                          {
                              name: 'Create',
                              value: 'create',
                              description: 'Create a folder',
                              action: 'Create a folder',
                          },
                          {
                              name: 'Delete',
                              value: 'delete',
                              description: 'Delete a folder',
                              action: 'Delete a folder',
                          },
                          {
                              name: 'List',
                              value: 'list',
                              description: 'Return the contents of a given folder',
                              action: 'List a folder',
                          },
                          {
                              name: 'Move',
                              value: 'move',
                              description: 'Move a folder',
                              action: 'Move a folder',
                          },
                          {
                              name: 'Share',
                              value: 'share',
                              description: 'Share a folder',
                              action: 'Share a folder',
                          },
                      ],
                      default: 'create',
                  },
                  {
                      displayName: 'Operation',
                      name: 'operation',
                      type: 'options',
                      noDataExpression: true,
                      displayOptions: {
                          show: {
                              resource: ['user'],
                          },
                      },
                      options: [
                          {
                              name: 'Create',
                              value: 'create',
                              description: 'Invite a user to a NextCloud organization',
                              action: 'Create a user',
                          },
                          {
                              name: 'Delete',
                              value: 'delete',
                              description: 'Delete a user',
                              action: 'Delete a user',
                          },
                          {
                              name: 'Get',
                              value: 'get',
                              description: 'Retrieve information about a single user',
                              action: 'Get a user',
                          },
                          {
                              name: 'Get Many',
                              value: 'getAll',
                              description: 'Retrieve a list of users',
                              action: 'Get many users',
                          },
                          {
                              name: 'Update',
                              value: 'update',
                              description: 'Edit attributes related to a user',
                              action: 'Update a user',
                          },
                      ],
                      default: 'create',
                  },
                  {
                      displayName: 'From Path',
                      name: 'path',
                      type: 'string',
                      default: '',
                      required: true,
                      displayOptions: {
                          show: {
                              operation: ['copy'],
                              resource: ['file', 'folder'],
                          },
                      },
                      placeholder: '/invoices/original.txt',
                      description: 'The path of file or folder to copy. The path should start with "/".',
                  },
                  {
                      displayName: 'To Path',
                      name: 'toPath',
                      type: 'string',
                      default: '',
                      required: true,
                      displayOptions: {
                          show: {
                              operation: ['copy'],
                              resource: ['file', 'folder'],
                          },
                      },
                      placeholder: '/invoices/copy.txt',
                      description: 'The destination path of file or folder. The path should start with "/".',
                  },
                  {
                      displayName: 'Delete Path',
                      name: 'path',
                      type: 'string',
                      default: '',
                      required: true,
                      displayOptions: {
                          show: {
                              operation: ['delete'],
                              resource: ['file', 'folder'],
                          },
                      },
                      placeholder: '/invoices/2019/invoice_1.pdf',
                      description: 'The path to delete. Can be a single file or a whole folder. The path should start with "/".',
                  },
                  {
                      displayName: 'From Path',
                      name: 'path',
                      type: 'string',
                      default: '',
                      required: true,
                      displayOptions: {
                          show: {
                              operation: ['move'],
                              resource: ['file', 'folder'],
                          },
                      },
                      placeholder: '/invoices/old_name.txt',
                      description: 'The path of file or folder to move. The path should start with "/".',
                  },
                  {
                      displayName: 'To Path',
                      name: 'toPath',
                      type: 'string',
                      default: '',
                      required: true,
                      displayOptions: {
                          show: {
                              operation: ['move'],
                              resource: ['file', 'folder'],
                          },
                      },
                      placeholder: '/invoices/new_name.txt',
                      description: 'The new path of file or folder. The path should start with "/".',
                  },
                  {
                      displayName: 'File Path',
                      name: 'path',
                      type: 'string',
                      default: '',
                      required: true,
                      displayOptions: {
                          show: {
                              operation: ['download'],
                              resource: ['file'],
                          },
                      },
                      placeholder: '/invoices/2019/invoice_1.pdf',
                      description: 'The file path of the file to download. Has to contain the full path. The path should start with "/".',
                  },
                  {
                      displayName: 'Binary Property',
                      name: 'binaryPropertyName',
                      type: 'string',
                      default: 'data',
                      required: true,
                      displayOptions: {
                          show: {
                              operation: ['download'],
                              resource: ['file'],
                          },
                      },
                      description: 'Name of the binary property to which to write the data of the read file',
                  },
                  {
                      displayName: 'File Path',
                      name: 'path',
                      type: 'string',
                      default: '',
                      required: true,
                      displayOptions: {
                          show: {
                              operation: ['upload'],
                              resource: ['file'],
                          },
                      },
                      placeholder: '/invoices/2019/invoice_1.pdf',
                      description: 'The absolute file path of the file to upload. Has to contain the full path. The parent folder has to exist. Existing files get overwritten.',
                  },
                  {
                      displayName: 'Binary Data',
                      name: 'binaryDataUpload',
                      type: 'boolean',
                      default: false,
                      required: true,
                      displayOptions: {
                          show: {
                              operation: ['upload'],
                              resource: ['file'],
                          },
                      },
                  },
                  {
                      displayName: 'File Content',
                      name: 'fileContent',
                      type: 'string',
                      default: '',
                      displayOptions: {
                          show: {
                              binaryDataUpload: [false],
                              operation: ['upload'],
                              resource: ['file'],
                          },
                      },
                      placeholder: '',
                      description: 'The text content of the file to upload',
                  },
                  {
                      displayName: 'Binary Property',
                      name: 'binaryPropertyName',
                      type: 'string',
                      default: 'data',
                      required: true,
                      displayOptions: {
                          show: {
                              binaryDataUpload: [true],
                              operation: ['upload'],
                              resource: ['file'],
                          },
                      },
                      placeholder: '',
                      description: 'Name of the binary property which contains the data for the file to be uploaded',
                  },
                  {
                      displayName: 'File Path',
                      name: 'path',
                      type: 'string',
                      default: '',
                      required: true,
                      displayOptions: {
                          show: {
                              operation: ['share'],
                              resource: ['file', 'folder'],
                          },
                      },
                      placeholder: '/invoices/2019/invoice_1.pdf',
                      description: 'The file path of the file to share. Has to contain the full path. The path should start with "/".',
                  },
                  {
                      displayName: 'Share Type',
                      name: 'shareType',
                      type: 'options',
                      displayOptions: {
                          show: {
                              operation: ['share'],
                              resource: ['file', 'folder'],
                          },
                      },
                      options: [
                          {
                              name: 'Circle',
                              value: 7,
                          },
                          {
                              name: 'Email',
                              value: 4,
                          },
                          {
                              name: 'Group',
                              value: 1,
                          },
                          {
                              name: 'Public Link',
                              value: 3,
                          },
                          {
                              name: 'User',
                              value: 0,
                          },
                      ],
                      default: 0,
                      description: 'The share permissions to set',
                  },
                  {
                      displayName: 'Circle ID',
                      name: 'circleId',
                      type: 'string',
                      displayOptions: {
                          show: {
                              resource: ['file', 'folder'],
                              operation: ['share'],
                              shareType: [7],
                          },
                      },
                      default: '',
                      description: 'The ID of the circle to share with',
                  },
                  {
                      displayName: 'Email',
                      name: 'email',
                      type: 'string',
                      placeholder: 'name@email.com',
                      displayOptions: {
                          show: {
                              resource: ['file', 'folder'],
                              operation: ['share'],
                              shareType: [4],
                          },
                      },
                      default: '',
                      description: 'The Email address to share with',
                  },
                  {
                      displayName: 'Group ID',
                      name: 'groupId',
                      type: 'string',
                      displayOptions: {
                          show: {
                              resource: ['file', 'folder'],
                              operation: ['share'],
                              shareType: [1],
                          },
                      },
                      default: '',
                      description: 'The ID of the group to share with',
                  },
                  {
                      displayName: 'User',
                      name: 'user',
                      type: 'string',
                      displayOptions: {
                          show: {
                              resource: ['file', 'folder'],
                              operation: ['share'],
                              shareType: [0],
                          },
                      },
                      default: '',
                      description: 'The user to share with',
                  },
                  {
                      displayName: 'Options',
                      name: 'options',
                      type: 'collection',
                      placeholder: 'Add Option',
                      default: {},
                      displayOptions: {
                          show: {
                              resource: ['file', 'folder'],
                              operation: ['share'],
                          },
                      },
                      options: [
                          {
                              displayName: 'Password',
                              name: 'password',
                              type: 'string',
                              typeOptions: { password: true },
                              displayOptions: {
                                  show: {
                                      '/resource': ['file', 'folder'],
                                      '/operation': ['share'],
                                      '/shareType': [3],
                                  },
                              },
                              default: '',
                              description: 'Optional search string',
                          },
                          {
                              displayName: 'Permissions',
                              name: 'permissions',
                              type: 'options',
                              options: [
                                  {
                                      name: 'All',
                                      value: 31,
                                  },
                                  {
                                      name: 'Create',
                                      value: 4,
                                  },
                                  {
                                      name: 'Delete',
                                      value: 8,
                                  },
                                  {
                                      name: 'Read',
                                      value: 1,
                                  },
                                  {
                                      name: 'Update',
                                      value: 2,
                                  },
                              ],
                              default: 1,
                              description: 'The share permissions to set',
                          },
                      ],
                  },
                  {
                      displayName: 'Folder',
                      name: 'path',
                      type: 'string',
                      default: '',
                      required: true,
                      displayOptions: {
                          show: {
                              operation: ['create'],
                              resource: ['folder'],
                          },
                      },
                      placeholder: '/invoices/2019',
                      description: 'The folder to create. The parent folder has to exist. The path should start with "/".',
                  },
                  {
                      displayName: 'Folder Path',
                      name: 'path',
                      type: 'string',
                      default: '',
                      displayOptions: {
                          show: {
                              operation: ['list'],
                              resource: ['folder'],
                          },
                      },
                      placeholder: '/invoices/2019/',
                      description: 'The path of which to list the content. The path should start with "/".',
                  },
                  {
                      displayName: 'Username',
                      name: 'userId',
                      type: 'string',
                      default: '',
                      required: true,
                      displayOptions: {
                          show: {
                              resource: ['user'],
                              operation: ['create'],
                          },
                      },
                      placeholder: 'john',
                      description: 'Username the user will have',
                  },
                  {
                      displayName: 'Email',
                      name: 'email',
                      type: 'string',
                      default: '',
                      required: true,
                      displayOptions: {
                          show: {
                              resource: ['user'],
                              operation: ['create'],
                          },
                      },
                      placeholder: 'john@email.com',
                      description: 'The email of the user to invite',
                  },
                  {
                      displayName: 'Additional Fields',
                      name: 'additionalFields',
                      type: 'collection',
                      placeholder: 'Add Field',
                      default: {},
                      displayOptions: {
                          show: {
                              resource: ['user'],
                              operation: ['create'],
                          },
                      },
                      options: [
                          {
                              displayName: 'Display Name',
                              name: 'displayName',
                              type: 'string',
                              default: '',
                              description: 'The display name of the user to invite',
                          },
                      ],
                  },
                  {
                      displayName: 'Username',
                      name: 'userId',
                      type: 'string',
                      default: '',
                      required: true,
                      displayOptions: {
                          show: {
                              resource: ['user'],
                              operation: ['delete', 'get', 'update'],
                          },
                      },
                      placeholder: 'john',
                      description: 'Username the user will have',
                  },
                  {
                      displayName: 'Return All',
                      name: 'returnAll',
                      type: 'boolean',
                      displayOptions: {
                          show: {
                              resource: ['user'],
                              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: ['user'],
                              operation: ['getAll'],
                              returnAll: [false],
                          },
                      },
                      typeOptions: {
                          minValue: 1,
                          maxValue: 100,
                      },
                      default: 50,
                      description: 'Max number of results to return',
                  },
                  {
                      displayName: 'Options',
                      name: 'options',
                      type: 'collection',
                      placeholder: 'Add Option',
                      default: {},
                      displayOptions: {
                          show: {
                              resource: ['user'],
                              operation: ['getAll'],
                          },
                      },
                      options: [
                          {
                              displayName: 'Search',
                              name: 'search',
                              type: 'string',
                              default: '',
                              description: 'Optional search string',
                          },
                          {
                              displayName: 'Offset',
                              name: 'offset',
                              type: 'number',
                              default: '',
                              description: 'Optional offset value',
                          },
                      ],
                  },
                  {
                      displayName: 'Update Fields',
                      name: 'updateFields',
                      type: 'fixedCollection',
                      typeOptions: {
                          multipleValues: false,
                      },
                      placeholder: 'Add Option',
                      default: {},
                      displayOptions: {
                          show: {
                              resource: ['user'],
                              operation: ['update'],
                          },
                      },
                      options: [
                          {
                              displayName: 'Fields',
                              name: 'field',
                              values: [
                                  {
                                      displayName: 'Key',
                                      name: 'key',
                                      type: 'options',
                                      default: 'email',
                                      options: [
                                          {
                                              name: 'Address',
                                              value: 'address',
                                              description: 'The new address for the user',
                                          },
                                          {
                                              name: 'Display Name',
                                              value: 'displayname',
                                              description: 'The new display name for the user',
                                          },
                                          {
                                              name: 'Email',
                                              value: 'email',
                                              description: 'The new email for the user',
                                          },
                                          {
                                              name: 'Password',
                                              value: 'password',
                                              description: 'The new password for the user',
                                          },
                                          {
                                              name: 'Twitter',
                                              value: 'twitter',
                                              description: 'The new twitter handle for the user',
                                          },
                                          {
                                              name: 'Website',
                                              value: 'website',
                                              description: 'The new website for the user',
                                          },
                                      ],
                                      description: 'Key of the updated attribute',
                                  },
                                  {
                                      displayName: 'Value',
                                      name: 'value',
                                      type: 'string',
                                      default: '',
                                      description: 'Value of the updated attribute',
                                  },
                              ],
                          },
                      ],
                  },
              ],
          };
      }
      async execute() {
          const items = this.getInputData().slice();
          const returnData = [];
          const authenticationMethod = this.getNodeParameter('authentication', 0);
          let credentials;
          if (authenticationMethod === 'accessToken') {
              credentials = await this.getCredentials('nextCloudApi');
          }
          else {
              credentials = await this.getCredentials('nextCloudOAuth2Api');
          }
          const resource = this.getNodeParameter('resource', 0);
          const operation = this.getNodeParameter('operation', 0);
          let endpoint = '';
          let requestMethod = '';
          let responseData;
          let body = '';
          const headers = {};
          let qs;
          for (let i = 0; i < items.length; i++) {
              try {
                  if (resource === 'file') {
                      if (operation === 'download') {
                          requestMethod = 'GET';
                          endpoint = this.getNodeParameter('path', i);
                      }
                      else if (operation === 'upload') {
                          requestMethod = 'PUT';
                          endpoint = this.getNodeParameter('path', i);
                          if (this.getNodeParameter('binaryDataUpload', i) === true) {
                              const binaryPropertyName = this.getNodeParameter('binaryPropertyName', i);
                              this.helpers.assertBinaryData(i, binaryPropertyName);
                              body = await this.helpers.getBinaryDataBuffer(i, binaryPropertyName);
                          }
                          else {
                              body = this.getNodeParameter('fileContent', i);
                          }
                      }
                  }
                  else if (resource === 'folder') {
                      if (operation === 'create') {
                          requestMethod = 'MKCOL';
                          endpoint = this.getNodeParameter('path', i);
                      }
                      else if (operation === 'list') {
                          requestMethod = 'PROPFIND';
                          endpoint = this.getNodeParameter('path', i);
                      }
                  }
                  if (['file', 'folder'].includes(resource)) {
                      if (operation === 'copy') {
                          requestMethod = 'COPY';
                          endpoint = this.getNodeParameter('path', i);
                          const toPath = this.getNodeParameter('toPath', i);
                          headers.Destination = `${credentials.webDavUrl}/${encodeURI(toPath)}`;
                      }
                      else if (operation === 'delete') {
                          requestMethod = 'DELETE';
                          endpoint = this.getNodeParameter('path', i);
                      }
                      else if (operation === 'move') {
                          requestMethod = 'MOVE';
                          endpoint = this.getNodeParameter('path', i);
                          const toPath = this.getNodeParameter('toPath', i);
                          headers.Destination = `${credentials.webDavUrl}/${encodeURI(toPath)}`;
                      }
                      else if (operation === 'share') {
                          requestMethod = 'POST';
                          endpoint = 'ocs/v2.php/apps/files_sharing/api/v1/shares';
                          headers['OCS-APIRequest'] = true;
                          headers['Content-Type'] = 'application/x-www-form-urlencoded';
                          const bodyParameters = this.getNodeParameter('options', i);
                          bodyParameters.path = this.getNodeParameter('path', i);
                          bodyParameters.shareType = this.getNodeParameter('shareType', i);
                          if (bodyParameters.shareType === 0) {
                              bodyParameters.shareWith = this.getNodeParameter('user', i);
                          }
                          else if (bodyParameters.shareType === 7) {
                              bodyParameters.shareWith = this.getNodeParameter('circleId', i);
                          }
                          else if (bodyParameters.shareType === 4) {
                              bodyParameters.shareWith = this.getNodeParameter('email', i);
                          }
                          else if (bodyParameters.shareType === 1) {
                              bodyParameters.shareWith = this.getNodeParameter('groupId', i);
                          }
                          body = new url_1.URLSearchParams(bodyParameters).toString();
                      }
                  }
                  else if (resource === 'user') {
                      if (operation === 'create') {
                          requestMethod = 'POST';
                          endpoint = 'ocs/v1.php/cloud/users';
                          headers['OCS-APIRequest'] = true;
                          headers['Content-Type'] = 'application/x-www-form-urlencoded';
                          const userid = this.getNodeParameter('userId', i);
                          const email = this.getNodeParameter('email', i);
                          body = `userid=${userid}&email=${email}`;
                          const additionalFields = this.getNodeParameter('additionalFields', i);
                          if (additionalFields.displayName) {
                              body += `&displayName=${additionalFields.displayName}`;
                          }
                      }
                      if (operation === 'delete') {
                          requestMethod = 'DELETE';
                          const userid = this.getNodeParameter('userId', i);
                          endpoint = `ocs/v1.php/cloud/users/${userid}`;
                          headers['OCS-APIRequest'] = true;
                          headers['Content-Type'] = 'application/x-www-form-urlencoded';
                      }
                      if (operation === 'get') {
                          requestMethod = 'GET';
                          const userid = this.getNodeParameter('userId', i);
                          endpoint = `ocs/v1.php/cloud/users/${userid}`;
                          headers['OCS-APIRequest'] = true;
                          headers['Content-Type'] = 'application/x-www-form-urlencoded';
                      }
                      if (operation === 'getAll') {
                          requestMethod = 'GET';
                          const returnAll = this.getNodeParameter('returnAll', i);
                          qs = this.getNodeParameter('options', i);
                          if (!returnAll) {
                              qs.limit = this.getNodeParameter('limit', i);
                          }
                          endpoint = 'ocs/v1.php/cloud/users';
                          headers['OCS-APIRequest'] = true;
                          headers['Content-Type'] = 'application/x-www-form-urlencoded';
                      }
                      if (operation === 'update') {
                          requestMethod = 'PUT';
                          const userid = this.getNodeParameter('userId', i);
                          endpoint = `ocs/v1.php/cloud/users/${userid}`;
                          body = Object.entries(this.getNodeParameter('updateFields', i).field)
                              .map((entry) => {
                              const [key, value] = entry;
                              return `${key}=${value}`;
                          })
                              .join('&');
                          headers['OCS-APIRequest'] = true;
                          headers['Content-Type'] = 'application/x-www-form-urlencoded';
                      }
                  }
                  else {
                      throw new n8n_workflow_1.NodeOperationError(this.getNode(), `The resource "${resource}" is not known!`, {
                          itemIndex: i,
                      });
                  }
                  let webDavUrl = credentials.webDavUrl;
                  if (webDavUrl.slice(-1) === '/') {
                      webDavUrl = webDavUrl.slice(0, -1);
                  }
                  let encoding = undefined;
                  if (resource === 'file' && operation === 'download') {
                      encoding = null;
                  }
                  try {
                      responseData = await GenericFunctions_1.nextCloudApiRequest.call(this, requestMethod, endpoint, body, headers, encoding, qs);
                  }
                  catch (error) {
                      if (this.continueOnFail()) {
                          if (resource === 'file' && operation === 'download') {
                              items[i].json = { error: error.message };
                          }
                          else {
                              returnData.push({ json: { error: error.message }, pairedItem: { item: i } });
                          }
                          continue;
                      }
                      throw error;
                  }
                  if (resource === 'file' && operation === 'download') {
                      const newItem = {
                          json: items[i].json,
                          pairedItem: { item: i },
                          binary: {},
                      };
                      if (items[i].binary !== undefined) {
                          Object.assign(newItem.binary, items[i].binary);
                      }
                      items[i] = newItem;
                      const binaryPropertyName = this.getNodeParameter('binaryPropertyName', i);
                      items[i].binary[binaryPropertyName] = await this.helpers.prepareBinaryData(responseData, endpoint);
                  }
                  else if (['file', 'folder'].includes(resource) && operation === 'share') {
                      const jsonResponseData = await new Promise((resolve, reject) => {
                          (0, xml2js_1.parseString)(responseData, { explicitArray: false }, (err, data) => {
                              if (err) {
                                  return reject(err);
                              }
                              if (data.ocs.meta.status !== 'ok') {
                                  return reject(new n8n_workflow_1.NodeApiError(this.getNode(), data.ocs.meta.message || data.ocs.meta.status));
                              }
                              resolve(data.ocs.data);
                          });
                      });
                      const executionData = this.helpers.constructExecutionMetaData((0, utilities_1.wrapData)(jsonResponseData), { itemData: { item: i } });
                      returnData.push(...executionData);
                  }
                  else if (resource === 'user') {
                      if (operation !== 'getAll') {
                          const jsonResponseData = await new Promise((resolve, reject) => {
                              (0, xml2js_1.parseString)(responseData, { explicitArray: false }, (err, data) => {
                                  if (err) {
                                      return reject(err);
                                  }
                                  if (data.ocs.meta.status !== 'ok') {
                                      return reject(new n8n_workflow_1.NodeApiError(this.getNode(), (data.ocs.meta.message || data.ocs.meta.status)));
                                  }
                                  if (operation === 'delete' || operation === 'update') {
                                      resolve(data.ocs.meta);
                                  }
                                  else {
                                      resolve(data.ocs.data);
                                  }
                              });
                          });
                          const executionData = this.helpers.constructExecutionMetaData((0, utilities_1.wrapData)(jsonResponseData), { itemData: { item: i } });
                          returnData.push(...executionData);
                      }
                      else {
                          const jsonResponseData = await new Promise((resolve, reject) => {
                              (0, xml2js_1.parseString)(responseData, { explicitArray: false }, (err, data) => {
                                  if (err) {
                                      return reject(err);
                                  }
                                  if (data.ocs.meta.status !== 'ok') {
                                      return reject(new n8n_workflow_1.NodeApiError(this.getNode(), data.ocs.meta.message));
                                  }
                                  if (typeof data.ocs.data.users.element === 'string') {
                                      resolve([data.ocs.data.users.element]);
                                  }
                                  else {
                                      resolve(data.ocs.data.users.element);
                                  }
                              });
                          });
                          jsonResponseData.forEach((value) => {
                              returnData.push({ json: { id: value }, pairedItem: { item: i } });
                          });
                      }
                  }
                  else if (resource === 'folder' && operation === 'list') {
                      const jsonResponseData = await new Promise((resolve, reject) => {
                          (0, xml2js_1.parseString)(responseData, { explicitArray: false }, (err, data) => {
                              if (err) {
                                  return reject(err);
                              }
                              resolve(data);
                          });
                      });
                      const propNames = {
                          'd:getlastmodified': 'lastModified',
                          'd:getcontentlength': 'contentLength',
                          'd:getcontenttype': 'contentType',
                      };
                      if (jsonResponseData['d:multistatus'] !== undefined &&
                          jsonResponseData['d:multistatus'] !== null &&
                          jsonResponseData['d:multistatus']['d:response'] !== undefined &&
                          jsonResponseData['d:multistatus']['d:response'] !== null) {
                          let skippedFirst = false;
                          if (Array.isArray(jsonResponseData['d:multistatus']['d:response'])) {
                              for (const item of jsonResponseData['d:multistatus']['d:response']) {
                                  if (!skippedFirst) {
                                      skippedFirst = true;
                                      continue;
                                  }
                                  const newItem = {};
                                  newItem.path = item['d:href'].slice(19);
                                  let props = {};
                                  if (Array.isArray(item['d:propstat'])) {
                                      props = item['d:propstat'][0]['d:prop'];
                                  }
                                  else {
                                      props = item['d:propstat']['d:prop'];
                                  }
                                  for (const propName of Object.keys(propNames)) {
                                      if (props[propName] !== undefined) {
                                          newItem[propNames[propName]] = props[propName];
                                      }
                                  }
                                  if (props['d:resourcetype'] === '') {
                                      newItem.type = 'file';
                                  }
                                  else {
                                      newItem.type = 'folder';
                                  }
                                  newItem.eTag = props['d:getetag'].slice(1, -1);
                                  returnData.push({ json: newItem, pairedItem: { item: i } });
                              }
                          }
                      }
                  }
                  else {
                      const executionData = this.helpers.constructExecutionMetaData((0, utilities_1.wrapData)(responseData), {
                          itemData: { item: i },
                      });
                      returnData.push(...executionData);
                  }
              }
              catch (error) {
                  if (this.continueOnFail()) {
                      if (resource === 'file' && operation === 'download') {
                          items[i].json = { error: error.message };
                      }
                      else {
                          returnData.push({ json: { error: error.message }, pairedItem: { item: i } });
                      }
                      continue;
                  }
                  throw error;
              }
          }
          if (resource === 'file' && operation === 'download') {
              return [items];
          }
          else {
              return [returnData];
          }
      }
  }
  exports.NextCloud = NextCloud;
  //# sourceMappingURL=NextCloud.node.js.map

documentation_markdown:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Nextcloud node documentation
  description: Learn how to use the Nextcloud node in n8n. Follow technical documentation to integrate Nextcloud node into your workflows.
  contentType: [integration, reference]
  priority: medium
  ---

  # Nextcloud node

  Use the Nextcloud node to automate work in Nextcloud, and integrate Nextcloud with other applications. n8n has built-in support for a wide range of Nextcloud features, including creating, updating, deleting, and getting files, and folders as well as retrieving, and inviting users. 

  On this page, you'll find a list of operations the Nextcloud node supports and links to more resources.

  /// note | Credentials
  Refer to [Nextcloud credentials](/integrations/builtin/credentials/nextcloud.md) for guidance on setting up authentication. 
  ///

  --8<-- "_snippets/integrations/builtin/app-nodes/ai-tools.md"

  ## Operations

  * File
      * Copy a file
      * Delete a file
      * Download a file
      * Move a file
      * Share a file
      * Upload a file
  * Folder
      * Copy a folder
      * Create a folder
      * Delete a folder
      * Return the contents of a given folder
      * Move a folder
      * Share a folder
  * User
      * Invite a user to a Nextcloud organization
      * Delete a user.
      * Retrieve information about a single user.
      * Retrieve a list of users.
      * Edit attributes related to a user.

  ## Templates and examples

  <!-- see https://www.notion.so/n8n/Pull-in-templates-for-the-integrations-pages-37c716837b804d30a33b47475f6e3780 -->
  [[ templatesWidget(page.title, 'nextcloud') ]]

  --8<-- "_snippets/integrations/builtin/app-nodes/operation-not-supported.md"

example_workflow:
  {"nodes":[{"parameters":{},"type":"n8n-nodes-base.node","typeVersion":1,"position":[220,120],"id":"526a1615-d18b-499c-bc36-bbcac87f14f4","name":"Node"}],"connections":{"Node":{"main":[[]]}},"pinData":{},"meta":{"templateCredsSetupCompleted":true,"instanceId":"2bc8eccac067eca46507bbc2042d03394945dd61e230c640125bf2b6d135cfaa"}}


node_type: n8n-nodes-base.NoOp
name: NoOp
display_name: No Operation, do nothing
description: No Operation
category: organization
icon: fa:arrow-right
code_hash: 278af9bf87c21e19e021d2b0d95db30e200ff832063dacdd6c6c9707ade374f6
documentation_url: https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.noop
example_parameters: {}
properties_schema: []
package_name: n8n-nodes-base
version: 1.0
extracted_at: 2025-06-08 09:18:18
updated_at: 2025-06-08 09:18:18
source_code:
  "use strict";
  Object.defineProperty(exports, "__esModule", { value: true });
  exports.NoOp = void 0;
  class NoOp {
      constructor() {
          this.description = {
              displayName: 'No Operation, do nothing',
              name: 'noOp',
              icon: 'fa:arrow-right',
              group: ['organization'],
              version: 1,
              description: 'No Operation',
              defaults: {
                  name: 'No Operation, do nothing',
                  color: '#b0b0b0',
              },
              inputs: ['main'],
              outputs: ['main'],
              properties: [],
          };
      }
      async execute() {
          const items = this.getInputData();
          return [items];
      }
  }
  exports.NoOp = NoOp;
  //# sourceMappingURL=NoOp.node.js.map

documentation_markdown:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: No Operation, do nothing
  description: Documentation for the No Operation, do nothing node in n8n, a workflow automation platform. Includes guidance on usage, and links to examples.
  contentType: [integration, reference]
  priority: high
  ---

  # No Operation, do nothing

  Use the No Operation, do nothing node when you don't want to perform any operations. The purpose of this node is to make the workflow easier to read and understand where the flow of data stops. This can help others visually get a better understanding of the workflow.

  ## Templates and examples

  <!-- see https://www.notion.so/n8n/Pull-in-templates-for-the-integrations-pages-37c716837b804d30a33b47475f6e3780 -->
  [[ templatesWidget(page.title, 'no-operation-do-nothing') ]]

example_workflow:
  {"nodes":[{"parameters":{},"type":"n8n-nodes-base.node","typeVersion":1,"position":[220,120],"id":"a9e8e330-0206-4f74-b6ab-fb0f6665754c","name":"Node"}],"connections":{"Node":{"main":[[]]}},"pinData":{},"meta":{"templateCredsSetupCompleted":true,"instanceId":"6e2ee040a27c4230b328fb9cf65dea872059361f48bafd1f91722e42e18f17a6"}}


node_type: n8n-nodes-base.NocoDB
name: NocoDB
display_name: NocoDB
description: Read, update, write and delete data from NocoDB
category: input
icon: file:nocodb.svg
code_hash: 7d751f624d7bbb1b691ac33e2946f2b503c7a129ad9b490811c60d03b5f90921
documentation_url: https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.nocodb
example_parameters: {}
properties_schema: []
package_name: n8n-nodes-base
extracted_at: 2025-06-08 09:18:18
updated_at: 2025-06-08 09:18:18
source_code:
  "use strict";
  Object.defineProperty(exports, "__esModule", { value: true });
  exports.NocoDB = void 0;
  const n8n_workflow_1 = require("n8n-workflow");
  const GenericFunctions_1 = require("./GenericFunctions");
  const OperationDescription_1 = require("./OperationDescription");
  class NocoDB {
      constructor() {
          this.description = {
              displayName: 'NocoDB',
              name: 'nocoDb',
              icon: 'file:nocodb.svg',
              group: ['input'],
              version: [1, 2],
              subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
              description: 'Read, update, write and delete data from NocoDB',
              defaults: {
                  name: 'NocoDB',
              },
              inputs: ['main'],
              outputs: ['main'],
              credentials: [
                  {
                      name: 'nocoDb',
                      required: true,
                      displayOptions: {
                          show: {
                              authentication: ['nocoDb'],
                          },
                      },
                  },
                  {
                      name: 'nocoDbApiToken',
                      required: true,
                      displayOptions: {
                          show: {
                              authentication: ['nocoDbApiToken'],
                          },
                      },
                  },
              ],
              properties: [
                  {
                      displayName: 'Authentication',
                      name: 'authentication',
                      type: 'options',
                      options: [
                          {
                              name: 'User Token',
                              value: 'nocoDb',
                          },
                          {
                              name: 'API Token',
                              value: 'nocoDbApiToken',
                          },
                      ],
                      default: 'nocoDb',
                  },
                  {
                      displayName: 'API Version',
                      name: 'version',
                      type: 'options',
                      displayOptions: {
                          show: {
                              '@version': [1],
                          },
                      },
                      isNodeSetting: true,
                      options: [
                          {
                              name: 'Before v0.90.0',
                              value: 1,
                          },
                          {
                              name: 'v0.90.0 Onwards',
                              value: 2,
                          },
                      ],
                      default: 1,
                  },
                  {
                      displayName: 'API Version',
                      name: 'version',
                      type: 'options',
                      displayOptions: {
                          show: {
                              '@version': [2],
                          },
                      },
                      isNodeSetting: true,
                      options: [
                          {
                              name: 'Before v0.90.0',
                              value: 1,
                          },
                          {
                              name: 'v0.90.0 Onwards',
                              value: 2,
                          },
                      ],
                      default: 2,
                  },
                  {
                      displayName: 'Resource',
                      name: 'resource',
                      type: 'options',
                      noDataExpression: true,
                      options: [
                          {
                              name: 'Row',
                              value: 'row',
                          },
                      ],
                      default: 'row',
                  },
                  {
                      displayName: 'Operation',
                      name: 'operation',
                      type: 'options',
                      noDataExpression: true,
                      displayOptions: {
                          show: {
                              resource: ['row'],
                          },
                      },
                      options: [
                          {
                              name: 'Create',
                              value: 'create',
                              description: 'Create a row',
                              action: 'Create a row',
                          },
                          {
                              name: 'Delete',
                              value: 'delete',
                              description: 'Delete a row',
                              action: 'Delete a row',
                          },
                          {
                              name: 'Get',
                              value: 'get',
                              description: 'Retrieve a row',
                              action: 'Get a row',
                          },
                          {
                              name: 'Get Many',
                              value: 'getAll',
                              description: 'Retrieve many rows',
                              action: 'Get many rows',
                          },
                          {
                              name: 'Update',
                              value: 'update',
                              description: 'Update a row',
                              action: 'Update a row',
                          },
                      ],
                      default: 'get',
                  },
                  ...OperationDescription_1.operationFields,
              ],
          };
          this.methods = {
              loadOptions: {
                  async getProjects() {
                      try {
                          const requestMethod = 'GET';
                          const endpoint = '/api/v1/db/meta/projects/';
                          const responseData = await GenericFunctions_1.apiRequest.call(this, requestMethod, endpoint, {}, {});
                          return responseData.list.map((i) => ({ name: i.title, value: i.id }));
                      }
                      catch (e) {
                          throw new n8n_workflow_1.NodeOperationError(this.getNode(), new Error('Error while fetching projects!', { cause: e }));
                      }
                  },
                  async getTables() {
                      const projectId = this.getNodeParameter('projectId', 0);
                      if (projectId) {
                          try {
                              const requestMethod = 'GET';
                              const endpoint = `/api/v1/db/meta/projects/${projectId}/tables`;
                              const responseData = await GenericFunctions_1.apiRequest.call(this, requestMethod, endpoint, {}, {});
                              return responseData.list.map((i) => ({ name: i.title, value: i.id }));
                          }
                          catch (e) {
                              throw new n8n_workflow_1.NodeOperationError(this.getNode(), new Error('Error while fetching tables!', { cause: e }));
                          }
                      }
                      else {
                          throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'No project selected!');
                      }
                  },
              },
          };
      }
      async execute() {
          const items = this.getInputData();
          const returnData = [];
          let responseData;
          const version = this.getNodeParameter('version', 0);
          const resource = this.getNodeParameter('resource', 0);
          const operation = this.getNodeParameter('operation', 0);
          let returnAll = false;
          let requestMethod = '';
          let qs = {};
          let endPoint = '';
          const projectId = this.getNodeParameter('projectId', 0);
          const table = this.getNodeParameter('table', 0);
          if (resource === 'row') {
              if (operation === 'create') {
                  requestMethod = 'POST';
                  if (version === 1) {
                      endPoint = `/nc/${projectId}/api/v1/${table}/bulk`;
                  }
                  else if (version === 2) {
                      endPoint = `/api/v1/db/data/bulk/noco/${projectId}/${table}`;
                  }
                  const body = [];
                  for (let i = 0; i < items.length; i++) {
                      const newItem = {};
                      const dataToSend = this.getNodeParameter('dataToSend', i);
                      if (dataToSend === 'autoMapInputData') {
                          const incomingKeys = Object.keys(items[i].json);
                          const rawInputsToIgnore = this.getNodeParameter('inputsToIgnore', i);
                          const inputDataToIgnore = rawInputsToIgnore.split(',').map((c) => c.trim());
                          for (const key of incomingKeys) {
                              if (inputDataToIgnore.includes(key))
                                  continue;
                              newItem[key] = items[i].json[key];
                          }
                      }
                      else {
                          const fields = this.getNodeParameter('fieldsUi.fieldValues', i, []);
                          for (const field of fields) {
                              if (!field.binaryData) {
                                  newItem[field.fieldName] = field.fieldValue;
                              }
                              else if (field.binaryProperty) {
                                  const binaryPropertyName = field.binaryProperty;
                                  const binaryData = this.helpers.assertBinaryData(i, binaryPropertyName);
                                  const dataBuffer = await this.helpers.getBinaryDataBuffer(i, binaryPropertyName);
                                  const formData = {
                                      file: {
                                          value: dataBuffer,
                                          options: {
                                              filename: binaryData.fileName,
                                              contentType: binaryData.mimeType,
                                          },
                                      },
                                      json: JSON.stringify({
                                          api: 'xcAttachmentUpload',
                                          project_id: projectId,
                                          dbAlias: 'db',
                                          args: {},
                                      }),
                                  };
                                  let postUrl = '';
                                  if (version === 1) {
                                      postUrl = '/dashboard';
                                  }
                                  else if (version === 2) {
                                      postUrl = '/api/v1/db/storage/upload';
                                  }
                                  responseData = await GenericFunctions_1.apiRequest.call(this, 'POST', postUrl, {}, { project_id: projectId }, undefined, {
                                      formData,
                                  });
                                  newItem[field.fieldName] = JSON.stringify([responseData]);
                              }
                          }
                      }
                      body.push(newItem);
                  }
                  try {
                      responseData = await GenericFunctions_1.apiRequest.call(this, requestMethod, endPoint, body, qs);
                      let id = responseData[0];
                      for (let i = body.length - 1; i >= 0; i--) {
                          body[i].id = id--;
                      }
                      returnData.push(...body);
                  }
                  catch (error) {
                      if (this.continueOnFail()) {
                          returnData.push({ error: error.toString() });
                      }
                      throw new n8n_workflow_1.NodeApiError(this.getNode(), error);
                  }
              }
              if (operation === 'delete') {
                  requestMethod = 'DELETE';
                  let primaryKey = 'id';
                  if (version === 1) {
                      endPoint = `/nc/${projectId}/api/v1/${table}/bulk`;
                  }
                  else if (version === 2) {
                      endPoint = `/api/v1/db/data/bulk/noco/${projectId}/${table}`;
                      primaryKey = this.getNodeParameter('primaryKey', 0);
                      if (primaryKey === 'custom') {
                          primaryKey = this.getNodeParameter('customPrimaryKey', 0);
                      }
                  }
                  const body = [];
                  for (let i = 0; i < items.length; i++) {
                      const id = this.getNodeParameter('id', i);
                      body.push({ [primaryKey]: id });
                  }
                  try {
                      responseData = (await GenericFunctions_1.apiRequest.call(this, requestMethod, endPoint, body, qs));
                      if (version === 1) {
                          returnData.push(...items.map((item) => item.json));
                      }
                      else if (version === 2) {
                          returnData.push(...responseData.map((result, index) => {
                              if (result === 0) {
                                  const errorMessage = `The row with the ID "${body[index].id}" could not be deleted. It probably doesn't exist.`;
                                  if (this.continueOnFail()) {
                                      return { error: errorMessage };
                                  }
                                  throw new n8n_workflow_1.NodeApiError(this.getNode(), { message: errorMessage }, { message: errorMessage, itemIndex: index });
                              }
                              return {
                                  success: true,
                              };
                          }));
                      }
                  }
                  catch (error) {
                      if (this.continueOnFail()) {
                          returnData.push({ error: error.toString() });
                      }
                      throw new n8n_workflow_1.NodeApiError(this.getNode(), error);
                  }
              }
              if (operation === 'getAll') {
                  const data = [];
                  const downloadAttachments = this.getNodeParameter('downloadAttachments', 0);
                  try {
                      for (let i = 0; i < items.length; i++) {
                          requestMethod = 'GET';
                          if (version === 1) {
                              endPoint = `/nc/${projectId}/api/v1/${table}`;
                          }
                          else if (version === 2) {
                              endPoint = `/api/v1/db/data/noco/${projectId}/${table}`;
                          }
                          returnAll = this.getNodeParameter('returnAll', 0);
                          qs = this.getNodeParameter('options', i, {});
                          if (qs.sort) {
                              const properties = qs.sort.property;
                              qs.sort = properties
                                  .map((prop) => `${prop.direction === 'asc' ? '' : '-'}${prop.field}`)
                                  .join(',');
                          }
                          if (qs.fields) {
                              qs.fields = qs.fields.join(',');
                          }
                          if (returnAll) {
                              responseData = await GenericFunctions_1.apiRequestAllItems.call(this, requestMethod, endPoint, {}, qs);
                          }
                          else {
                              qs.limit = this.getNodeParameter('limit', 0);
                              responseData = await GenericFunctions_1.apiRequest.call(this, requestMethod, endPoint, {}, qs);
                              if (version === 2) {
                                  responseData = responseData.list;
                              }
                          }
                          const executionData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray(responseData), { itemData: { item: i } });
                          returnData.push(...executionData);
                          if (downloadAttachments) {
                              const downloadFieldNames = this.getNodeParameter('downloadFieldNames', 0).split(',');
                              const response = await GenericFunctions_1.downloadRecordAttachments.call(this, responseData, downloadFieldNames);
                              data.push(...response);
                          }
                      }
                      if (downloadAttachments) {
                          return [data];
                      }
                  }
                  catch (error) {
                      if (this.continueOnFail()) {
                          returnData.push({ json: { error: error.toString() } });
                      }
                      else {
                          throw error;
                      }
                  }
                  return [returnData];
              }
              if (operation === 'get') {
                  requestMethod = 'GET';
                  const newItems = [];
                  for (let i = 0; i < items.length; i++) {
                      try {
                          const id = this.getNodeParameter('id', i);
                          if (version === 1) {
                              endPoint = `/nc/${projectId}/api/v1/${table}/${id}`;
                          }
                          else if (version === 2) {
                              endPoint = `/api/v1/db/data/noco/${projectId}/${table}/${id}`;
                          }
                          responseData = await GenericFunctions_1.apiRequest.call(this, requestMethod, endPoint, {}, qs);
                          if (version === 2) {
                              if (Object.keys(responseData).length === 0) {
                                  const errorMessage = `The row with the ID "${id}" could not be queried. It probably doesn't exist.`;
                                  if (this.continueOnFail()) {
                                      newItems.push({ json: { error: errorMessage } });
                                      continue;
                                  }
                                  throw new n8n_workflow_1.NodeApiError(this.getNode(), { message: errorMessage }, { message: errorMessage, itemIndex: i });
                              }
                          }
                          const downloadAttachments = this.getNodeParameter('downloadAttachments', i);
                          if (downloadAttachments) {
                              const downloadFieldNames = this.getNodeParameter('downloadFieldNames', i).split(',');
                              const data = await GenericFunctions_1.downloadRecordAttachments.call(this, [responseData], downloadFieldNames);
                              const newItem = {
                                  binary: data[0].binary,
                                  json: {},
                              };
                              const executionData = this.helpers.constructExecutionMetaData([newItem], { itemData: { item: i } });
                              newItems.push(...executionData);
                          }
                          else {
                              const executionData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray(responseData), { itemData: { item: i } });
                              newItems.push(...executionData);
                          }
                      }
                      catch (error) {
                          if (this.continueOnFail()) {
                              const executionData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray({ error: error.toString() }), { itemData: { item: i } });
                              newItems.push(...executionData);
                              continue;
                          }
                          throw new n8n_workflow_1.NodeApiError(this.getNode(), error, { itemIndex: i });
                      }
                  }
                  return [newItems];
              }
              if (operation === 'update') {
                  requestMethod = 'PATCH';
                  let primaryKey = 'id';
                  if (version === 1) {
                      endPoint = `/nc/${projectId}/api/v1/${table}/bulk`;
                      requestMethod = 'PUT';
                  }
                  else if (version === 2) {
                      endPoint = `/api/v1/db/data/bulk/noco/${projectId}/${table}`;
                      primaryKey = this.getNodeParameter('primaryKey', 0);
                      if (primaryKey === 'custom') {
                          primaryKey = this.getNodeParameter('customPrimaryKey', 0);
                      }
                  }
                  const body = [];
                  for (let i = 0; i < items.length; i++) {
                      const id = this.getNodeParameter('id', i);
                      const newItem = { [primaryKey]: id };
                      const dataToSend = this.getNodeParameter('dataToSend', i);
                      if (dataToSend === 'autoMapInputData') {
                          const incomingKeys = Object.keys(items[i].json);
                          const rawInputsToIgnore = this.getNodeParameter('inputsToIgnore', i);
                          const inputDataToIgnore = rawInputsToIgnore.split(',').map((c) => c.trim());
                          for (const key of incomingKeys) {
                              if (inputDataToIgnore.includes(key))
                                  continue;
                              newItem[key] = items[i].json[key];
                          }
                      }
                      else {
                          const fields = this.getNodeParameter('fieldsUi.fieldValues', i, []);
                          for (const field of fields) {
                              if (!field.binaryData) {
                                  newItem[field.fieldName] = field.fieldValue;
                              }
                              else if (field.binaryProperty) {
                                  const binaryPropertyName = field.binaryProperty;
                                  const binaryData = this.helpers.assertBinaryData(i, binaryPropertyName);
                                  const dataBuffer = await this.helpers.getBinaryDataBuffer(i, binaryPropertyName);
                                  const formData = {
                                      file: {
                                          value: dataBuffer,
                                          options: {
                                              filename: binaryData.fileName,
                                              contentType: binaryData.mimeType,
                                          },
                                      },
                                      json: JSON.stringify({
                                          api: 'xcAttachmentUpload',
                                          project_id: projectId,
                                          dbAlias: 'db',
                                          args: {},
                                      }),
                                  };
                                  let postUrl = '';
                                  if (version === 1) {
                                      postUrl = '/dashboard';
                                  }
                                  else if (version === 2) {
                                      postUrl = '/api/v1/db/storage/upload';
                                  }
                                  responseData = await GenericFunctions_1.apiRequest.call(this, 'POST', postUrl, {}, { project_id: projectId }, undefined, {
                                      formData,
                                  });
                                  newItem[field.fieldName] = JSON.stringify([responseData]);
                              }
                          }
                      }
                      body.push(newItem);
                  }
                  try {
                      responseData = (await GenericFunctions_1.apiRequest.call(this, requestMethod, endPoint, body, qs));
                      if (version === 1) {
                          returnData.push(...body);
                      }
                      else if (version === 2) {
                          returnData.push(...responseData.map((result, index) => {
                              if (result === 0) {
                                  const errorMessage = `The row with the ID "${body[index].id}" could not be updated. It probably doesn't exist.`;
                                  if (this.continueOnFail()) {
                                      return { error: errorMessage };
                                  }
                                  throw new n8n_workflow_1.NodeApiError(this.getNode(), { message: errorMessage }, { message: errorMessage, itemIndex: index });
                              }
                              return {
                                  success: true,
                              };
                          }));
                      }
                  }
                  catch (error) {
                      if (this.continueOnFail()) {
                          returnData.push({ error: error.toString() });
                      }
                      throw new n8n_workflow_1.NodeApiError(this.getNode(), error);
                  }
              }
          }
          return [this.helpers.returnJsonArray(returnData)];
      }
  }
  exports.NocoDB = NocoDB;
  //# sourceMappingURL=NocoDB.node.js.map

documentation_markdown:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: NocoDB node documentation
  description: Learn how to use the NocoDB node in n8n. Follow technical documentation to integrate NocoDB node into your workflows.
  contentType: [integration, reference]
  priority: medium
  ---

  # NocoDB node

  Use the NocoDB node to automate work in NocoDB, and integrate NocoDB with other applications. n8n has built-in support for a wide range of NocoDB features, including creating, updating, deleting, and retrieving rows. 

  On this page, you'll find a list of operations the NocoDB node supports and links to more resources.

  /// note | Credentials
  Refer to [NocoDB credentials](/integrations/builtin/credentials/nocodb.md) for guidance on setting up authentication. 
  ///

  --8<-- "_snippets/integrations/builtin/app-nodes/ai-tools.md"

  ## Operations

  * Row
      * Create
      * Delete
      * Get
      * Get Many
      * Update a row

  ## Templates and examples

  <!-- see https://www.notion.so/n8n/Pull-in-templates-for-the-integrations-pages-37c716837b804d30a33b47475f6e3780 -->
  [[ templatesWidget(page.title, 'nocodb') ]]

  ## Relates resources

  Refer to [NocoDB's documentation](https://docs.nocodb.com/){:target=_blank .external-link} for more information about the service.

  --8<-- "_snippets/integrations/builtin/app-nodes/operation-not-supported.md"

example_workflow:
  {"nodes":[{"parameters":{},"type":"n8n-nodes-base.node","typeVersion":1,"position":[220,120],"id":"73fbd879-768c-44c8-8fcc-411b35ef33ea","name":"Node"}],"connections":{"Node":{"main":[[]]}},"pinData":{},"meta":{"templateCredsSetupCompleted":true,"instanceId":"4e8020888dc2620be7e490edb0fde9251c56653e63682e55a63691557e7aa16a"}}


node_type: n8n-nodes-base.Notion
name: Notion
display_name: Notion
description: Consume Notion API
category: output
icon: file:notion.svg
code_hash: c03a7082cc459b1fc4b4a722f00708276fbcd7889708aebbb5f396e16cf17439
documentation_url: https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.notiontrigger
example_parameters: {}
properties_schema: []
package_name: n8n-nodes-base
extracted_at: 2025-06-08 09:18:18
updated_at: 2025-06-08 09:18:18
source_code:
  "use strict";
  Object.defineProperty(exports, "__esModule", { value: true });
  exports.Notion = void 0;
  const n8n_workflow_1 = require("n8n-workflow");
  const NotionV1_node_1 = require("./v1/NotionV1.node");
  const NotionV2_node_1 = require("./v2/NotionV2.node");
  class Notion extends n8n_workflow_1.VersionedNodeType {
      constructor() {
          const baseDescription = {
              displayName: 'Notion',
              name: 'notion',
              icon: 'file:notion.svg',
              group: ['output'],
              subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
              description: 'Consume Notion API',
              defaultVersion: 2,
          };
          const nodeVersions = {
              1: new NotionV1_node_1.NotionV1(baseDescription),
              2: new NotionV2_node_1.NotionV2(baseDescription),
          };
          super(nodeVersions, baseDescription);
      }
  }
  exports.Notion = Notion;
  //# sourceMappingURL=Notion.node.js.map

documentation_markdown:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Notion Trigger node documentation
  description: Learn how to use the Notion Trigger node in n8n. Follow technical documentation to integrate Notion Trigger node into your workflows.
  contentType: [integration, reference]
  priority: high
  ---

  # Notion Trigger node

  [Notion](https://notion.so){:target=_blank .external-link} is an all-in-one workspace for your notes, tasks, wikis, and databases.

  /// note | Credentials
  You can find authentication information for this node [here](/integrations/builtin/credentials/notion.md).
  ///

  ///  note  | Examples and templates
  For usage examples and templates to help you get started, refer to n8n's [Notion Trigger integrations](https://n8n.io/integrations/notion-trigger-beta/){:target=_blank .external-link} page.
  ///

  ## Events

  * Page added to database
  * Page updated in database

  ## Related resources

  n8n provides an app node for Notion. You can find the node docs [here](/integrations/builtin/app-nodes/n8n-nodes-base.notion/index.md).

  View [example workflows and related content](https://n8n.io/integrations/notion-trigger/){:target=_blank .external-link} on n8n's website.

  Refer to [Notion's documentation](https://developers.notion.com/){:target=_blank .external-link} for details about their API.

example_workflow:
  {"nodes":[{"parameters":{},"type":"n8n-nodes-base.node","typeVersion":1,"position":[220,120],"id":"46288c52-d689-435e-9c1f-9db4bbf90bcd","name":"Node"}],"connections":{"Node":{"main":[[]]}},"pinData":{},"meta":{"templateCredsSetupCompleted":true,"instanceId":"44eb6e18fd6b3da95a8310fdb9f26f996a3aa398ee961006ce61899d392887e6"}}


node_type: n8n-nodes-base.Netlify
name: Netlify
display_name: Netlify
description: Consume Netlify API
category: transform
icon: file:netlify.svg
code_hash: da09d02d0d7620d84e394d150cea0f5613386191bcbea87271e7f06c30b5b31a
documentation_url: https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.netlifytrigger
example_parameters: {}
properties_schema: []
package_name: n8n-nodes-base
version: 1.0
extracted_at: 2025-06-08 09:18:18
updated_at: 2025-06-08 09:18:18
source_code:
  "use strict";
  Object.defineProperty(exports, "__esModule", { value: true });
  exports.Netlify = void 0;
  const GenericFunctions_1 = require("./GenericFunctions");
  const DeployDescription_1 = require("./DeployDescription");
  const SiteDescription_1 = require("./SiteDescription");
  class Netlify {
      constructor() {
          this.description = {
              displayName: 'Netlify',
              name: 'netlify',
              icon: 'file:netlify.svg',
              group: ['transform'],
              version: 1,
              subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
              description: 'Consume Netlify API',
              defaults: {
                  name: 'Netlify',
              },
              inputs: ['main'],
              outputs: ['main'],
              credentials: [
                  {
                      name: 'netlifyApi',
                      required: true,
                  },
              ],
              properties: [
                  {
                      displayName: 'Resource',
                      name: 'resource',
                      type: 'options',
                      noDataExpression: true,
                      options: [
                          {
                              name: 'Deploy',
                              value: 'deploy',
                          },
                          {
                              name: 'Site',
                              value: 'site',
                          },
                      ],
                      default: 'deploy',
                      required: true,
                  },
                  ...DeployDescription_1.deployOperations,
                  ...DeployDescription_1.deployFields,
                  ...SiteDescription_1.siteOperations,
                  ...SiteDescription_1.siteFields,
              ],
          };
          this.methods = {
              loadOptions: {
                  async getSites() {
                      const returnData = [];
                      const sites = await GenericFunctions_1.netlifyApiRequest.call(this, 'GET', '/sites');
                      for (const site of sites) {
                          returnData.push({
                              name: site.name,
                              value: site.site_id,
                          });
                      }
                      return returnData;
                  },
              },
          };
      }
      async execute() {
          const items = this.getInputData();
          const length = items.length;
          let responseData;
          const returnData = [];
          const qs = {};
          const body = {};
          const resource = this.getNodeParameter('resource', 0);
          const operation = this.getNodeParameter('operation', 0);
          for (let i = 0; i < length; i++) {
              try {
                  if (resource === 'deploy') {
                      if (operation === 'cancel') {
                          const deployId = this.getNodeParameter('deployId', i);
                          responseData = await GenericFunctions_1.netlifyApiRequest.call(this, 'POST', `/deploys/${deployId}/cancel`, body, qs);
                      }
                      if (operation === 'create') {
                          const siteId = this.getNodeParameter('siteId', i);
                          const additionalFields = this.getNodeParameter('additionalFields', i);
                          Object.assign(body, additionalFields);
                          if (body.title) {
                              qs.title = body.title;
                              delete body.title;
                          }
                          responseData = await GenericFunctions_1.netlifyApiRequest.call(this, 'POST', `/sites/${siteId}/deploys`, body, qs);
                      }
                      if (operation === 'get') {
                          const siteId = this.getNodeParameter('siteId', i);
                          const deployId = this.getNodeParameter('deployId', i);
                          responseData = await GenericFunctions_1.netlifyApiRequest.call(this, 'GET', `/sites/${siteId}/deploys/${deployId}`, body, qs);
                      }
                      if (operation === 'getAll') {
                          const siteId = this.getNodeParameter('siteId', i);
                          const returnAll = this.getNodeParameter('returnAll', i);
                          if (returnAll) {
                              responseData = await GenericFunctions_1.netlifyRequestAllItems.call(this, 'GET', `/sites/${siteId}/deploys`);
                          }
                          else {
                              const limit = this.getNodeParameter('limit', i);
                              responseData = await GenericFunctions_1.netlifyApiRequest.call(this, 'GET', `/sites/${siteId}/deploys`, {}, { per_page: limit });
                          }
                      }
                  }
                  if (resource === 'site') {
                      if (operation === 'delete') {
                          const siteId = this.getNodeParameter('siteId', i);
                          responseData = await GenericFunctions_1.netlifyApiRequest.call(this, 'DELETE', `/sites/${siteId}`);
                      }
                      if (operation === 'get') {
                          const siteId = this.getNodeParameter('siteId', i);
                          responseData = await GenericFunctions_1.netlifyApiRequest.call(this, 'GET', `/sites/${siteId}`);
                      }
                      if (operation === 'getAll') {
                          const returnAll = this.getNodeParameter('returnAll', i);
                          if (returnAll) {
                              responseData = await GenericFunctions_1.netlifyRequestAllItems.call(this, 'GET', '/sites', {}, { filter: 'all' });
                          }
                          else {
                              const limit = this.getNodeParameter('limit', i);
                              responseData = await GenericFunctions_1.netlifyApiRequest.call(this, 'GET', '/sites', {}, { filter: 'all', per_page: limit });
                          }
                      }
                  }
                  const executionData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray(responseData), { itemData: { item: i } });
                  returnData.push(...executionData);
              }
              catch (error) {
                  if (this.continueOnFail()) {
                      const executionErrorData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } });
                      returnData.push(...executionErrorData);
                      continue;
                  }
                  throw error;
              }
          }
          return [returnData];
      }
  }
  exports.Netlify = Netlify;
  //# sourceMappingURL=Netlify.node.js.map

documentation_markdown:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Netlify Trigger node documentation
  description: Learn how to use the Netlify Trigger node in n8n. Follow technical documentation to integrate Netlify Trigger node into your workflows.
  contentType: [integration, reference]
  ---

  # Netlify Trigger node

  [Netlify](https://netlify.com/){:target=_blank .external-link} offers hosting and serverless backend services for web applications and static websites.

  /// note | Credentials
  You can find authentication information for this node [here](/integrations/builtin/credentials/netlify.md).
  ///

  ///  note  | Examples and templates
  For usage examples and templates to help you get started, refer to n8n's [Netlify Trigger integrations](https://n8n.io/integrations/netlify-trigger/){:target=_blank .external-link} page.
  ///

  ## Related resources

  n8n provides an app node for Netlify. You can find the node docs [here](/integrations/builtin/app-nodes/n8n-nodes-base.netlify.md).

  View [example workflows and related content](https://n8n.io/integrations/netlify/){:target=_blank .external-link} on n8n's website.

example_workflow:
  {"nodes":[{"parameters":{},"type":"n8n-nodes-base.node","typeVersion":1,"position":[220,120],"id":"9c4a0037-0ed5-4c05-b563-50942695f2c9","name":"Node"}],"connections":{"Node":{"main":[[]]}},"pinData":{},"meta":{"templateCredsSetupCompleted":true,"instanceId":"a5bb42a4b28cfc4aefad2154d2a78d6acf6773b51628ca5817de22e38ef69685"}}


node_type: n8n-nodes-base.Orbit
name: Orbit
display_name: Orbit
description: Consume Orbit API
category: output
icon: file:orbit.svg
code_hash: a764c179c3c5124709b80cdb672b1ef5f68ca0d0116cd4dcb0f972b61cdee72e
example_parameters: {}
properties_schema: []
package_name: n8n-nodes-base
version: 1.0
extracted_at: 2025-06-08 09:18:19
updated_at: 2025-06-08 09:18:19
source_code:
  "use strict";
  var __importDefault = (this && this.__importDefault) || function (mod) {
      return (mod && mod.__esModule) ? mod : { "default": mod };
  };
  Object.defineProperty(exports, "__esModule", { value: true });
  exports.Orbit = void 0;
  const GenericFunctions_1 = require("./GenericFunctions");
  const ActivityDescription_1 = require("./ActivityDescription");
  const MemberDescription_1 = require("./MemberDescription");
  const NoteDescription_1 = require("./NoteDescription");
  const PostDescription_1 = require("./PostDescription");
  const moment_1 = __importDefault(require("moment"));
  class Orbit {
      constructor() {
          this.description = {
              displayName: 'Orbit',
              name: 'orbit',
              icon: 'file:orbit.svg',
              group: ['output'],
              version: 1,
              subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
              description: 'Consume Orbit API',
              defaults: {
                  name: 'Orbit',
              },
              inputs: ['main'],
              outputs: ['main'],
              credentials: [
                  {
                      name: 'orbitApi',
                      required: true,
                  },
              ],
              properties: [
                  {
                      displayName: 'Resource',
                      name: 'resource',
                      type: 'options',
                      noDataExpression: true,
                      options: [
                          {
                              name: 'Activity',
                              value: 'activity',
                          },
                          {
                              name: 'Member',
                              value: 'member',
                          },
                          {
                              name: 'Note',
                              value: 'note',
                          },
                          {
                              name: 'Post',
                              value: 'post',
                          },
                      ],
                      default: 'member',
                  },
                  ...ActivityDescription_1.activityOperations,
                  ...ActivityDescription_1.activityFields,
                  ...MemberDescription_1.memberOperations,
                  ...MemberDescription_1.memberFields,
                  ...NoteDescription_1.noteOperations,
                  ...NoteDescription_1.noteFields,
                  ...PostDescription_1.postOperations,
                  ...PostDescription_1.postFields,
              ],
          };
          this.methods = {
              loadOptions: {
                  async getWorkspaces() {
                      const returnData = [];
                      const workspaces = await GenericFunctions_1.orbitApiRequest.call(this, 'GET', '/workspaces');
                      for (const workspace of workspaces.data) {
                          returnData.push({
                              name: workspace.attributes.name,
                              value: workspace.attributes.slug,
                          });
                      }
                      return returnData;
                  },
                  async getActivityTypes() {
                      const returnData = [];
                      const { data } = await GenericFunctions_1.orbitApiRequest.call(this, 'GET', '/activity_types');
                      for (const activityType of data) {
                          returnData.push({
                              name: activityType.attributes.short_name,
                              value: activityType.id,
                          });
                      }
                      return returnData;
                  },
              },
          };
      }
      async execute() {
          const items = this.getInputData();
          const returnData = [];
          const length = items.length;
          const qs = {};
          let responseData;
          const resource = this.getNodeParameter('resource', 0);
          const operation = this.getNodeParameter('operation', 0);
          for (let i = 0; i < length; i++) {
              try {
                  if (resource === 'activity') {
                      if (operation === 'create') {
                          const workspaceId = this.getNodeParameter('workspaceId', i);
                          const memberId = this.getNodeParameter('memberId', i);
                          const title = this.getNodeParameter('title', i);
                          const additionalFields = this.getNodeParameter('additionalFields', i);
                          const body = {
                              title,
                          };
                          if (additionalFields.description) {
                              body.description = additionalFields.description;
                          }
                          if (additionalFields.link) {
                              body.link = additionalFields.link;
                          }
                          if (additionalFields.linkText) {
                              body.link_text = additionalFields.linkText;
                          }
                          if (additionalFields.activityType) {
                              body.activity_type = additionalFields.activityType;
                          }
                          if (additionalFields.key) {
                              body.key = additionalFields.key;
                          }
                          if (additionalFields.occurredAt) {
                              body.occurred_at = additionalFields.occurredAt;
                          }
                          responseData = await GenericFunctions_1.orbitApiRequest.call(this, 'POST', `/${workspaceId}/members/${memberId}/activities`, body);
                          responseData = responseData.data;
                      }
                      if (operation === 'getAll') {
                          const workspaceId = this.getNodeParameter('workspaceId', i);
                          const returnAll = this.getNodeParameter('returnAll', i);
                          const filters = this.getNodeParameter('filters', i);
                          let endpoint = `/${workspaceId}/activities`;
                          if (filters.memberId) {
                              endpoint = `/${workspaceId}/members/${filters.memberId}/activities`;
                          }
                          if (returnAll) {
                              responseData = await GenericFunctions_1.orbitApiRequestAllItems.call(this, 'data', 'GET', endpoint, {}, qs);
                          }
                          else {
                              qs.limit = this.getNodeParameter('limit', 0);
                              responseData = await GenericFunctions_1.orbitApiRequestAllItems.call(this, 'data', 'GET', endpoint, {}, qs);
                              responseData = responseData.splice(0, qs.limit);
                          }
                      }
                  }
                  if (resource === 'member') {
                      if (operation === 'upsert') {
                          const workspaceId = this.getNodeParameter('workspaceId', i);
                          const additionalFields = this.getNodeParameter('additionalFields', i);
                          const member = {};
                          const identity = {};
                          if (additionalFields.bio) {
                              member.bio = additionalFields.bio;
                          }
                          if (additionalFields.birthday) {
                              member.birthday = (0, moment_1.default)(additionalFields.birthday).format('MM-DD-YYYY');
                          }
                          if (additionalFields.company) {
                              member.company = additionalFields.company;
                          }
                          if (additionalFields.location) {
                              member.location = additionalFields.location;
                          }
                          if (additionalFields.name) {
                              member.name = additionalFields.name;
                          }
                          if (additionalFields.bio) {
                              member.bio = additionalFields.bio;
                          }
                          if (additionalFields.pronouns) {
                              member.pronouns = additionalFields.pronouns;
                          }
                          if (additionalFields.shippingAddress) {
                              member.shipping_address = additionalFields.shippingAddress;
                          }
                          if (additionalFields.slug) {
                              member.slug = additionalFields.slug;
                          }
                          if (additionalFields.tagsToAdd) {
                              member.tags_to_add = additionalFields.tagsToAdd;
                          }
                          if (additionalFields.tagList) {
                              member.tag_list = additionalFields.tagList;
                          }
                          if (additionalFields.tshirt) {
                              member.tshirt = additionalFields.tshirt;
                          }
                          if (additionalFields.hasOwnProperty('teammate')) {
                              member.teammate = additionalFields.teammate;
                          }
                          if (additionalFields.url) {
                              member.url = additionalFields.url;
                          }
                          const data = this.getNodeParameter('identityUi', i)
                              .identityValue;
                          if (data) {
                              if (['github', 'twitter', 'discourse'].includes(data.source)) {
                                  identity.source = data.source;
                                  const searchBy = data.searchBy;
                                  if (searchBy === 'id') {
                                      identity.uid = data.id;
                                  }
                                  else {
                                      identity.username = data.username;
                                  }
                                  if (data.source === 'discourse') {
                                      identity.source_host = data.host;
                                  }
                              }
                              else {
                                  identity.email = data.email;
                              }
                          }
                          responseData = await GenericFunctions_1.orbitApiRequest.call(this, 'POST', `/${workspaceId}/members`, {
                              member,
                              identity,
                          });
                          responseData = responseData.data;
                      }
                      if (operation === 'delete') {
                          const workspaceId = this.getNodeParameter('workspaceId', i);
                          const memberId = this.getNodeParameter('memberId', i);
                          responseData = await GenericFunctions_1.orbitApiRequest.call(this, 'DELETE', `/${workspaceId}/members/${memberId}`);
                          responseData = { success: true };
                      }
                      if (operation === 'get') {
                          const workspaceId = this.getNodeParameter('workspaceId', i);
                          const memberId = this.getNodeParameter('memberId', i);
                          const resolve = this.getNodeParameter('resolveIdentities', 0);
                          responseData = await GenericFunctions_1.orbitApiRequest.call(this, 'GET', `/${workspaceId}/members/${memberId}`);
                          if (resolve) {
                              (0, GenericFunctions_1.resolveIdentities)(responseData);
                          }
                          responseData = responseData.data;
                      }
                      if (operation === 'getAll') {
                          const workspaceId = this.getNodeParameter('workspaceId', i);
                          const returnAll = this.getNodeParameter('returnAll', 0);
                          const options = this.getNodeParameter('options', i);
                          Object.assign(qs, options);
                          qs.resolveIdentities = this.getNodeParameter('resolveIdentities', 0);
                          if (returnAll) {
                              responseData = await GenericFunctions_1.orbitApiRequestAllItems.call(this, 'data', 'GET', `/${workspaceId}/members`, {}, qs);
                          }
                          else {
                              qs.limit = this.getNodeParameter('limit', 0);
                              responseData = await GenericFunctions_1.orbitApiRequestAllItems.call(this, 'data', 'GET', `/${workspaceId}/members`, {}, qs);
                              responseData = responseData.splice(0, qs.limit);
                          }
                      }
                      if (operation === 'lookup') {
                          const workspaceId = this.getNodeParameter('workspaceId', i);
                          const source = this.getNodeParameter('source', i);
                          if (['github', 'twitter', 'discourse'].includes(source)) {
                              qs.source = this.getNodeParameter('source', i);
                              const searchBy = this.getNodeParameter('searchBy', i);
                              if (searchBy === 'id') {
                                  qs.uid = this.getNodeParameter('id', i);
                              }
                              else {
                                  qs.username = this.getNodeParameter('username', i);
                              }
                              if (source === 'discourse') {
                                  qs.source_host = this.getNodeParameter('host', i);
                              }
                          }
                          else {
                              qs.email = this.getNodeParameter('email', i);
                          }
                          responseData = await GenericFunctions_1.orbitApiRequest.call(this, 'GET', `/${workspaceId}/members/find`, {}, qs);
                          responseData = responseData.data;
                      }
                      if (operation === 'update') {
                          const workspaceId = this.getNodeParameter('workspaceId', i);
                          const memberId = this.getNodeParameter('memberId', i);
                          const updateFields = this.getNodeParameter('updateFields', i);
                          const body = {};
                          if (updateFields.bio) {
                              body.bio = updateFields.bio;
                          }
                          if (updateFields.birthday) {
                              body.birthday = (0, moment_1.default)(updateFields.birthday).format('MM-DD-YYYY');
                          }
                          if (updateFields.company) {
                              body.company = updateFields.company;
                          }
                          if (updateFields.location) {
                              body.location = updateFields.location;
                          }
                          if (updateFields.name) {
                              body.name = updateFields.name;
                          }
                          if (updateFields.bio) {
                              body.bio = updateFields.bio;
                          }
                          if (updateFields.pronouns) {
                              body.pronouns = updateFields.pronouns;
                          }
                          if (updateFields.shippingAddress) {
                              body.shipping_address = updateFields.shippingAddress;
                          }
                          if (updateFields.slug) {
                              body.slug = updateFields.slug;
                          }
                          if (updateFields.tagsToAdd) {
                              body.tags_to_add = updateFields.tagsToAdd;
                          }
                          if (updateFields.tagList) {
                              body.tag_list = updateFields.tagList;
                          }
                          if (updateFields.tshirt) {
                              body.tshirt = updateFields.tshirt;
                          }
                          if (updateFields.hasOwnProperty('teammate')) {
                              body.teammate = updateFields.teammate;
                          }
                          if (updateFields.url) {
                              body.url = updateFields.url;
                          }
                          responseData = await GenericFunctions_1.orbitApiRequest.call(this, 'PUT', `/${workspaceId}/members/${memberId}`, body);
                          responseData = { success: true };
                      }
                  }
                  if (resource === 'note') {
                      if (operation === 'create') {
                          const workspaceId = this.getNodeParameter('workspaceId', i);
                          const memberId = this.getNodeParameter('memberId', i);
                          const note = this.getNodeParameter('note', i);
                          responseData = await GenericFunctions_1.orbitApiRequest.call(this, 'POST', `/${workspaceId}/members/${memberId}/notes`, { body: note });
                          responseData = responseData.data;
                      }
                      if (operation === 'getAll') {
                          const workspaceId = this.getNodeParameter('workspaceId', i);
                          const memberId = this.getNodeParameter('memberId', i);
                          const returnAll = this.getNodeParameter('returnAll', i);
                          qs.resolveMember = this.getNodeParameter('resolveMember', 0);
                          if (returnAll) {
                              responseData = await GenericFunctions_1.orbitApiRequestAllItems.call(this, 'data', 'GET', `/${workspaceId}/members/${memberId}/notes`, {}, qs);
                          }
                          else {
                              qs.limit = this.getNodeParameter('limit', 0);
                              responseData = await GenericFunctions_1.orbitApiRequestAllItems.call(this, 'data', 'GET', `/${workspaceId}/members/${memberId}/notes`, {}, qs);
                              responseData = responseData.splice(0, qs.limit);
                          }
                      }
                      if (operation === 'update') {
                          const workspaceId = this.getNodeParameter('workspaceId', i);
                          const memberId = this.getNodeParameter('memberId', i);
                          const noteId = this.getNodeParameter('noteId', i);
                          const note = this.getNodeParameter('note', i);
                          responseData = await GenericFunctions_1.orbitApiRequest.call(this, 'PUT', `/${workspaceId}/members/${memberId}/notes/${noteId}`, { body: note });
                          responseData = { success: true };
                      }
                  }
                  if (resource === 'post') {
                      if (operation === 'create') {
                          const workspaceId = this.getNodeParameter('workspaceId', i);
                          const memberId = this.getNodeParameter('memberId', i);
                          const url = this.getNodeParameter('url', i);
                          const additionalFields = this.getNodeParameter('additionalFields', i);
                          const body = {
                              type: 'post',
                              activity_type: 'post',
                              url,
                          };
                          if (additionalFields.publishedAt) {
                              body.occurred_at = additionalFields.publishedAt;
                              delete body.publishedAt;
                          }
                          responseData = await GenericFunctions_1.orbitApiRequest.call(this, 'POST', `/${workspaceId}/members/${memberId}/activities/`, body);
                          responseData = responseData.data;
                      }
                      if (operation === 'getAll') {
                          const workspaceId = this.getNodeParameter('workspaceId', i);
                          const returnAll = this.getNodeParameter('returnAll', i);
                          const filters = this.getNodeParameter('filters', i);
                          let endpoint = `/${workspaceId}/activities`;
                          qs.type = 'content';
                          if (filters.memberId) {
                              endpoint = `/${workspaceId}/members/${filters.memberId}/activities`;
                          }
                          if (returnAll) {
                              responseData = await GenericFunctions_1.orbitApiRequestAllItems.call(this, 'data', 'GET', endpoint, {}, qs);
                          }
                          else {
                              qs.limit = this.getNodeParameter('limit', 0);
                              responseData = await GenericFunctions_1.orbitApiRequestAllItems.call(this, 'data', 'GET', endpoint, {}, qs);
                              responseData = responseData.splice(0, qs.limit);
                          }
                      }
                      if (operation === 'delete') {
                          const workspaceId = this.getNodeParameter('workspaceId', i);
                          const memberId = this.getNodeParameter('memberId', i);
                          const postId = this.getNodeParameter('postId', i);
                          responseData = await GenericFunctions_1.orbitApiRequest.call(this, 'DELETE', `/${workspaceId}/members/${memberId}/activities/${postId}`);
                          responseData = { success: true };
                      }
                  }
                  const executionData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray(responseData), { itemData: { item: i } });
                  returnData.push(...executionData);
              }
              catch (error) {
                  if (this.continueOnFail()) {
                      const executionErrorData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } });
                      returnData.push(...executionErrorData);
                      continue;
                  }
                  throw error;
              }
          }
          return [returnData];
      }
  }
  exports.Orbit = Orbit;
  //# sourceMappingURL=Orbit.node.js.map

example_workflow:
  {"nodes":[{"parameters":{},"type":"n8n-nodes-base.node","typeVersion":1,"position":[220,120],"id":"4eed14c3-2d6c-498e-9b38-a4de755d34aa","name":"Node"}],"connections":{"Node":{"main":[[]]}},"pinData":{},"meta":{"templateCredsSetupCompleted":true,"instanceId":"40bccd961e5dbba1af82a85c35a208de589b30005c5902723f949d327ef55bbb"}}


node_type: n8n-nodes-base.OneSimpleApi
name: OneSimpleApi
display_name: One Simple API
description: A toolbox of no-code utilities
category: transform
icon: file:onesimpleapi.svg
code_hash: f12c32f96a4405d7edd7a8d6bb2f024daec690414b8b1d90cbecca1105d267c6
documentation_url: https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.onesimpleapi
example_parameters: {}
properties_schema: []
package_name: n8n-nodes-base
version: 1.0
extracted_at: 2025-06-08 09:18:19
updated_at: 2025-06-08 09:18:19
source_code:
  "use strict";
  Object.defineProperty(exports, "__esModule", { value: true });
  exports.OneSimpleApi = void 0;
  const GenericFunctions_1 = require("./GenericFunctions");
  class OneSimpleApi {
      constructor() {
          this.description = {
              displayName: 'One Simple API',
              name: 'oneSimpleApi',
              icon: 'file:onesimpleapi.svg',
              group: ['transform'],
              version: 1,
              description: 'A toolbox of no-code utilities',
              defaults: {
                  name: 'One Simple API',
              },
              inputs: ['main'],
              outputs: ['main'],
              credentials: [
                  {
                      name: 'oneSimpleApi',
                      required: true,
                  },
              ],
              properties: [
                  {
                      displayName: 'Resource',
                      name: 'resource',
                      type: 'options',
                      noDataExpression: true,
                      options: [
                          {
                              name: 'Information',
                              value: 'information',
                          },
                          {
                              name: 'Social Profile',
                              value: 'socialProfile',
                          },
                          {
                              name: 'Utility',
                              value: 'utility',
                          },
                          {
                              name: 'Website',
                              value: 'website',
                          },
                      ],
                      default: 'website',
                      required: true,
                  },
                  {
                      displayName: 'Operation',
                      name: 'operation',
                      type: 'options',
                      noDataExpression: true,
                      displayOptions: {
                          show: {
                              resource: ['website'],
                          },
                      },
                      options: [
                          {
                              name: 'Generate PDF',
                              value: 'pdf',
                              description: 'Generate a PDF from a webpage',
                              action: 'Generate PDF',
                          },
                          {
                              name: 'Get SEO Data',
                              value: 'seo',
                              description: 'Get SEO information from website',
                              action: 'Get SEO Data',
                          },
                          {
                              name: 'Take Screenshot',
                              value: 'screenshot',
                              description: 'Create a screenshot from a webpage',
                              action: 'Screenshot',
                          },
                      ],
                      default: 'pdf',
                  },
                  {
                      displayName: 'Operation',
                      name: 'operation',
                      type: 'options',
                      noDataExpression: true,
                      displayOptions: {
                          show: {
                              resource: ['socialProfile'],
                          },
                      },
                      options: [
                          {
                              name: 'Instagram',
                              value: 'instagramProfile',
                              description: 'Get details about an Instagram profile',
                              action: 'Get details about an Instagram profile',
                          },
                          {
                              name: 'Spotify',
                              value: 'spotifyArtistProfile',
                              description: 'Get details about a Spotify Artist',
                              action: 'Get details about a Spotify artist',
                          },
                      ],
                      default: 'instagramProfile',
                  },
                  {
                      displayName: 'Operation',
                      name: 'operation',
                      type: 'options',
                      noDataExpression: true,
                      displayOptions: {
                          show: {
                              resource: ['information'],
                          },
                      },
                      options: [
                          {
                              name: 'Exchange Rate',
                              value: 'exchangeRate',
                              description: 'Convert a value between currencies',
                              action: 'Convert a value between currencies',
                          },
                          {
                              name: 'Image Metadata',
                              value: 'imageMetadata',
                              description: 'Retrieve image metadata from a URL',
                              action: 'Get image metadata from a URL',
                          },
                      ],
                      default: 'exchangeRate',
                  },
                  {
                      displayName: 'Operation',
                      name: 'operation',
                      type: 'options',
                      noDataExpression: true,
                      displayOptions: {
                          show: {
                              resource: ['utility'],
                          },
                      },
                      options: [
                          {
                              name: 'Expand URL',
                              value: 'expandURL',
                              description: 'Expand a shortened URL',
                              action: 'Expand a shortened URL',
                          },
                          {
                              name: 'Generate QR Code',
                              value: 'qrCode',
                              description: 'Generate a QR Code',
                              action: 'Generate a QR code utility',
                          },
                          {
                              name: 'Validate Email',
                              value: 'validateEmail',
                              description: 'Validate an email address',
                              action: 'Validate an email address',
                          },
                      ],
                      default: 'validateEmail',
                  },
                  {
                      displayName: 'Webpage URL',
                      name: 'link',
                      type: 'string',
                      required: true,
                      displayOptions: {
                          show: {
                              operation: ['pdf'],
                              resource: ['website'],
                          },
                      },
                      default: '',
                      description: 'Link to webpage to convert',
                  },
                  {
                      displayName: 'Download PDF?',
                      name: 'download',
                      type: 'boolean',
                      required: true,
                      displayOptions: {
                          show: {
                              operation: ['pdf'],
                              resource: ['website'],
                          },
                      },
                      default: false,
                      description: 'Whether to download the PDF or return a link to it',
                  },
                  {
                      displayName: 'Put Output In Field',
                      name: 'output',
                      type: 'string',
                      required: true,
                      displayOptions: {
                          show: {
                              operation: ['pdf'],
                              resource: ['website'],
                              download: [true],
                          },
                      },
                      default: 'data',
                      description: 'The name of the output field to put the binary file data in',
                  },
                  {
                      displayName: 'Options',
                      name: 'options',
                      type: 'collection',
                      placeholder: 'Add Option',
                      default: {},
                      displayOptions: {
                          show: {
                              resource: ['website'],
                              operation: ['pdf'],
                          },
                      },
                      options: [
                          {
                              displayName: 'Page Size',
                              name: 'page',
                              type: 'options',
                              options: [
                                  {
                                      name: 'A0',
                                      value: 'A0',
                                  },
                                  {
                                      name: 'A1',
                                      value: 'A1',
                                  },
                                  {
                                      name: 'A2',
                                      value: 'A2',
                                  },
                                  {
                                      name: 'A3',
                                      value: 'A3',
                                  },
                                  {
                                      name: 'A4',
                                      value: 'A4',
                                  },
                                  {
                                      name: 'A5',
                                      value: 'A5',
                                  },
                                  {
                                      name: 'A6',
                                      value: 'A6',
                                  },
                                  {
                                      name: 'Ledger',
                                      value: 'Ledger',
                                  },
                                  {
                                      name: 'Legal',
                                      value: 'Legal',
                                  },
                                  {
                                      name: 'Letter',
                                      value: 'Letter',
                                  },
                                  {
                                      name: 'Tabloid',
                                      value: 'Tabloid',
                                  },
                              ],
                              default: '',
                          },
                          {
                              displayName: 'Force Refresh',
                              name: 'force',
                              type: 'boolean',
                              default: false,
                              description: "Normally the API will reuse a previously taken screenshot of the URL to give a faster response. This option allows you to retake the screenshot at that exact time, for those times when it's necessary.",
                          },
                      ],
                  },
                  {
                      displayName: 'QR Content',
                      name: 'message',
                      type: 'string',
                      required: true,
                      displayOptions: {
                          show: {
                              operation: ['qrCode'],
                              resource: ['utility'],
                          },
                      },
                      default: '',
                      description: 'The text that should be turned into a QR code - like a website URL',
                  },
                  {
                      displayName: 'Download Image?',
                      name: 'download',
                      type: 'boolean',
                      required: true,
                      displayOptions: {
                          show: {
                              operation: ['qrCode'],
                              resource: ['utility'],
                          },
                      },
                      default: false,
                      description: 'Whether to download the QR code or return a link to it',
                  },
                  {
                      displayName: 'Put Output In Field',
                      name: 'output',
                      type: 'string',
                      required: true,
                      displayOptions: {
                          show: {
                              operation: ['qrCode'],
                              resource: ['utility'],
                              download: [true],
                          },
                      },
                      default: 'data',
                      description: 'The name of the output field to put the binary file data in',
                  },
                  {
                      displayName: 'Options',
                      name: 'options',
                      type: 'collection',
                      placeholder: 'Add Option',
                      default: {},
                      displayOptions: {
                          show: {
                              resource: ['utility'],
                              operation: ['qrCode'],
                          },
                      },
                      options: [
                          {
                              displayName: 'Size',
                              name: 'size',
                              type: 'options',
                              options: [
                                  {
                                      name: 'Small',
                                      value: 'Small',
                                  },
                                  {
                                      name: 'Medium',
                                      value: 'Medium',
                                  },
                                  {
                                      name: 'Large',
                                      value: 'Large',
                                  },
                              ],
                              default: 'Small',
                              description: 'The QR Code size',
                          },
                          {
                              displayName: 'Format',
                              name: 'format',
                              type: 'options',
                              options: [
                                  {
                                      name: 'PNG',
                                      value: 'PNG',
                                  },
                                  {
                                      name: 'SVG',
                                      value: 'SVG',
                                  },
                              ],
                              default: 'PNG',
                              description: 'The QR Code format',
                          },
                      ],
                  },
                  {
                      displayName: 'Webpage URL',
                      name: 'link',
                      type: 'string',
                      required: true,
                      displayOptions: {
                          show: {
                              operation: ['screenshot'],
                              resource: ['website'],
                          },
                      },
                      default: '',
                      description: 'Link to webpage to convert',
                  },
                  {
                      displayName: 'Download Screenshot?',
                      name: 'download',
                      type: 'boolean',
                      required: true,
                      displayOptions: {
                          show: {
                              operation: ['screenshot'],
                              resource: ['website'],
                          },
                      },
                      default: false,
                      description: 'Whether to download the screenshot or return a link to it',
                  },
                  {
                      displayName: 'Put Output In Field',
                      name: 'output',
                      type: 'string',
                      required: true,
                      displayOptions: {
                          show: {
                              operation: ['screenshot'],
                              resource: ['website'],
                              download: [true],
                          },
                      },
                      default: 'data',
                      description: 'The name of the output field to put the binary file data in',
                  },
                  {
                      displayName: 'Options',
                      name: 'options',
                      type: 'collection',
                      placeholder: 'Add Option',
                      default: {},
                      displayOptions: {
                          show: {
                              resource: ['website'],
                              operation: ['screenshot'],
                          },
                      },
                      options: [
                          {
                              displayName: 'Screen Size',
                              name: 'screen',
                              type: 'options',
                              options: [
                                  {
                                      name: 'Phone',
                                      value: 'phone',
                                  },
                                  {
                                      name: 'Phone Landscape',
                                      value: 'phone-landscape',
                                  },
                                  {
                                      name: 'Retina',
                                      value: 'retina',
                                  },
                                  {
                                      name: 'Tablet',
                                      value: 'tablet',
                                  },
                                  {
                                      name: 'Tablet Landscape',
                                      value: 'tablet-landscape',
                                  },
                              ],
                              default: '',
                          },
                          {
                              displayName: 'Force Refresh',
                              name: 'force',
                              type: 'boolean',
                              default: false,
                              description: "Normally the API will reuse a previously taken screenshot of the URL to give a faster response. This option allows you to retake the screenshot at that exact time, for those times when it's necessary.",
                          },
                          {
                              displayName: 'Full Page',
                              name: 'fullpage',
                              type: 'boolean',
                              default: false,
                              description: 'The API takes a screenshot of the viewable area for the desired screen size. If you need a screenshot of the whole length of the page, use this option.',
                          },
                      ],
                  },
                  {
                      displayName: 'Profile Name',
                      name: 'profileName',
                      type: 'string',
                      required: true,
                      displayOptions: {
                          show: {
                              operation: ['instagramProfile'],
                              resource: ['socialProfile'],
                          },
                      },
                      default: '',
                      description: 'Profile name to get details of',
                  },
                  {
                      displayName: 'Artist Name',
                      name: 'artistName',
                      type: 'string',
                      required: true,
                      displayOptions: {
                          show: {
                              operation: ['spotifyArtistProfile'],
                              resource: ['socialProfile'],
                          },
                      },
                      default: '',
                      description: 'Artist name to get details for',
                  },
                  {
                      displayName: 'Value',
                      name: 'value',
                      type: 'string',
                      required: true,
                      displayOptions: {
                          show: {
                              operation: ['exchangeRate'],
                              resource: ['information'],
                          },
                      },
                      default: '',
                      description: 'Value to convert',
                  },
                  {
                      displayName: 'From Currency',
                      name: 'fromCurrency',
                      type: 'string',
                      required: true,
                      placeholder: 'USD',
                      displayOptions: {
                          show: {
                              operation: ['exchangeRate'],
                              resource: ['information'],
                          },
                      },
                      default: '',
                  },
                  {
                      displayName: 'To Currency',
                      name: 'toCurrency',
                      type: 'string',
                      placeholder: 'EUR',
                      required: true,
                      displayOptions: {
                          show: {
                              operation: ['exchangeRate'],
                              resource: ['information'],
                          },
                      },
                      default: '',
                  },
                  {
                      displayName: 'Link To Image',
                      name: 'link',
                      type: 'string',
                      required: true,
                      displayOptions: {
                          show: {
                              operation: ['imageMetadata'],
                              resource: ['information'],
                          },
                      },
                      default: '',
                      description: 'Image to get metadata from',
                  },
                  {
                      displayName: 'Webpage URL',
                      name: 'link',
                      type: 'string',
                      required: true,
                      displayOptions: {
                          show: {
                              operation: ['seo'],
                              resource: ['website'],
                          },
                      },
                      default: '',
                      description: 'Webpage to get SEO information for',
                  },
                  {
                      displayName: 'Options',
                      name: 'options',
                      type: 'collection',
                      placeholder: 'Add Option',
                      default: {},
                      displayOptions: {
                          show: {
                              resource: ['website'],
                              operation: ['seo'],
                          },
                      },
                      options: [
                          {
                              displayName: 'Include Headers?',
                              name: 'headers',
                              type: 'boolean',
                              default: false,
                          },
                      ],
                  },
                  {
                      displayName: 'Email Address',
                      name: 'emailAddress',
                      type: 'string',
                      required: true,
                      displayOptions: {
                          show: {
                              operation: ['validateEmail'],
                              resource: ['utility'],
                          },
                      },
                      default: '',
                  },
                  {
                      displayName: 'URL',
                      name: 'link',
                      type: 'string',
                      required: true,
                      displayOptions: {
                          show: {
                              operation: ['expandURL'],
                              resource: ['utility'],
                          },
                      },
                      default: '',
                      description: 'URL to unshorten',
                  },
              ],
          };
      }
      async execute() {
          const items = this.getInputData();
          const returnData = [];
          const length = items.length;
          const qs = {};
          let responseData;
          let download;
          for (let i = 0; i < length; i++) {
              try {
                  const resource = this.getNodeParameter('resource', 0);
                  const operation = this.getNodeParameter('operation', 0);
                  if (resource === 'website') {
                      if (operation === 'pdf') {
                          const link = this.getNodeParameter('link', i);
                          const options = this.getNodeParameter('options', i);
                          download = this.getNodeParameter('download', i);
                          qs.url = link;
                          if (options.page) {
                              qs.page = options.page;
                          }
                          if (options.force) {
                              qs.force = 'yes';
                          }
                          else {
                              qs.force = 'no';
                          }
                          const response = await GenericFunctions_1.oneSimpleApiRequest.call(this, 'GET', '/pdf', {}, qs);
                          if (download) {
                              const output = this.getNodeParameter('output', i);
                              const buffer = (await GenericFunctions_1.oneSimpleApiRequest.call(this, 'GET', '', {}, {}, response.url, { json: false, encoding: null }));
                              responseData = {
                                  json: response,
                                  binary: {
                                      [output]: await this.helpers.prepareBinaryData(buffer),
                                  },
                              };
                          }
                          else {
                              responseData = response;
                          }
                      }
                      if (operation === 'screenshot') {
                          const link = this.getNodeParameter('link', i);
                          const options = this.getNodeParameter('options', i);
                          download = this.getNodeParameter('download', i);
                          qs.url = link;
                          if (options.screen) {
                              qs.screen = options.screen;
                          }
                          if (options.fullpage) {
                              qs.fullpage = 'yes';
                          }
                          else {
                              qs.fullpage = 'no';
                          }
                          if (options.force) {
                              qs.force = 'yes';
                          }
                          else {
                              qs.force = 'no';
                          }
                          const response = await GenericFunctions_1.oneSimpleApiRequest.call(this, 'GET', '/screenshot', {}, qs);
                          if (download) {
                              const output = this.getNodeParameter('output', i);
                              const buffer = (await GenericFunctions_1.oneSimpleApiRequest.call(this, 'GET', '', {}, {}, response.url, { json: false, encoding: null }));
                              responseData = {
                                  json: response,
                                  binary: {
                                      [output]: await this.helpers.prepareBinaryData(buffer),
                                  },
                              };
                          }
                          else {
                              responseData = response;
                          }
                      }
                      if (operation === 'seo') {
                          const link = this.getNodeParameter('link', i);
                          const options = this.getNodeParameter('options', i);
                          qs.url = link;
                          if (options.headers) {
                              qs.headers = 'yes';
                          }
                          responseData = await GenericFunctions_1.oneSimpleApiRequest.call(this, 'GET', '/page_info', {}, qs);
                      }
                  }
                  if (resource === 'socialProfile') {
                      if (operation === 'instagramProfile') {
                          const profileName = this.getNodeParameter('profileName', i);
                          qs.profile = profileName;
                          responseData = await GenericFunctions_1.oneSimpleApiRequest.call(this, 'GET', '/instagram_profile', {}, qs);
                      }
                      if (operation === 'spotifyArtistProfile') {
                          const artistName = this.getNodeParameter('artistName', i);
                          qs.profile = artistName;
                          responseData = await GenericFunctions_1.oneSimpleApiRequest.call(this, 'GET', '/spotify_profile', {}, qs);
                      }
                  }
                  if (resource === 'information') {
                      if (operation === 'exchangeRate') {
                          const value = this.getNodeParameter('value', i);
                          const fromCurrency = this.getNodeParameter('fromCurrency', i);
                          const toCurrency = this.getNodeParameter('toCurrency', i);
                          qs.from_currency = fromCurrency;
                          qs.to_currency = toCurrency;
                          qs.from_value = value;
                          responseData = await GenericFunctions_1.oneSimpleApiRequest.call(this, 'GET', '/exchange_rate', {}, qs);
                      }
                      if (operation === 'imageMetadata') {
                          const link = this.getNodeParameter('link', i);
                          qs.url = link;
                          qs.raw = true;
                          responseData = await GenericFunctions_1.oneSimpleApiRequest.call(this, 'GET', '/image_info', {}, qs);
                      }
                  }
                  if (resource === 'utility') {
                      if (operation === 'validateEmail') {
                          const emailAddress = this.getNodeParameter('emailAddress', i);
                          qs.email = emailAddress;
                          responseData = await GenericFunctions_1.oneSimpleApiRequest.call(this, 'GET', '/email', {}, qs);
                      }
                      if (operation === 'expandURL') {
                          const url = this.getNodeParameter('link', i);
                          qs.url = url;
                          responseData = await GenericFunctions_1.oneSimpleApiRequest.call(this, 'GET', '/unshorten', {}, qs);
                      }
                      if (operation === 'qrCode') {
                          const message = this.getNodeParameter('message', i);
                          const options = this.getNodeParameter('options', i);
                          download = this.getNodeParameter('download', i);
                          qs.message = message;
                          if (options.size) {
                              qs.size = options.size;
                          }
                          if (options.format) {
                              qs.format = options.format;
                          }
                          const response = await GenericFunctions_1.oneSimpleApiRequest.call(this, 'GET', '/qr_code', {}, qs);
                          if (download) {
                              const output = this.getNodeParameter('output', i);
                              const buffer = (await GenericFunctions_1.oneSimpleApiRequest.call(this, 'GET', '', {}, {}, response.url, { json: false, encoding: null }));
                              responseData = {
                                  json: response,
                                  binary: {
                                      [output]: await this.helpers.prepareBinaryData(buffer),
                                  },
                              };
                          }
                          else {
                              responseData = response;
                          }
                      }
                  }
                  if (Array.isArray(responseData)) {
                      returnData.push.apply(returnData, responseData);
                  }
                  else {
                      returnData.push(responseData);
                  }
              }
              catch (error) {
                  if (this.continueOnFail()) {
                      returnData.push({ error: error.message });
                      continue;
                  }
                  throw error;
              }
          }
          if (download) {
              return [returnData];
          }
          return [this.helpers.returnJsonArray(returnData)];
      }
  }
  exports.OneSimpleApi = OneSimpleApi;
  //# sourceMappingURL=OneSimpleApi.node.js.map

documentation_markdown:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: One Simple API node documentation
  description: Learn how to use the One Simple API node in n8n. Follow technical documentation to integrate One Simple API node into your workflows.
  contentType: [integration, reference]
  ---
  <!-- vale off -->
  <!-- linting off because 'simple' isn't something I want to add to accept.txt -->
  # One Simple API node

  Use the One Simple API node to automate work in One Simple API, and integrate One Simple API with other applications. n8n has built-in support for a wide range of One Simple API features, including getting profiles, retrieving information, and generating utilities. 

  On this page, you'll find a list of operations the One Simple API node supports and links to more resources.

  /// note | Credentials
  Refer to [One Simple API credentials](/integrations/builtin/credentials/onesimpleapi.md) for guidance on setting up authentication. 
  ///

  ## Operations

  * Information
      * Convert a value between currencies
      * Retrieve image metadata from a URL
  * Social Profile
      * Get details about an Instagram profile
      * Get details about a Spotify Artist
  * Utility
      * Expand a shortened url
      * Generate a QR Code
      * Validate an email address
  * Website
      * Generate a PDF from a webpage
      * Get SEO information from website
      * Create a screenshot from a webpage

  ## Templates and examples

  <!-- see https://www.notion.so/n8n/Pull-in-templates-for-the-integrations-pages-37c716837b804d30a33b47475f6e3780 -->
  [[ templatesWidget(page.title, 'one-simple-api') ]]

  ## Related resources

  Refer to [One Simple API's documentation](https://onesimpleapi.com/docs){:target=_blank .external-link} for more information about the service.

  <!-- vale on -->

example_workflow:
  {"nodes":[{"parameters":{},"type":"n8n-nodes-base.node","typeVersion":1,"position":[220,120],"id":"3bfc4636-92d5-4a90-8d2d-fe31d415b526","name":"Node"}],"connections":{"Node":{"main":[[]]}},"pinData":{},"meta":{"templateCredsSetupCompleted":true,"instanceId":"5c7363308b8cf4d82b858d6661241cbb946c8bdf7505b74a25b3541abb60392f"}}


node_type: n8n-nodes-base.Npm
name: Npm
display_name: Npm
description: Consume NPM registry API
category: input
icon: file:npm.svg
code_hash: 89679c6261436e1c5088d99d5aa7ab0d04d15aff72f28f314d46904bc381601a
documentation_url: https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.npm
example_parameters: {}
properties_schema: []
package_name: n8n-nodes-base
version: 1.0
extracted_at: 2025-06-08 09:18:19
updated_at: 2025-06-08 09:18:19
source_code:
  "use strict";
  Object.defineProperty(exports, "__esModule", { value: true });
  exports.Npm = void 0;
  const PackageDescription_1 = require("./PackageDescription");
  const DistTagDescription_1 = require("./DistTagDescription");
  class Npm {
      constructor() {
          this.description = {
              displayName: 'Npm',
              name: 'npm',
              icon: 'file:npm.svg',
              group: ['input'],
              version: 1,
              subtitle: '={{ $parameter["operation"] + ": " + $parameter["resource"] }}',
              description: 'Consume NPM registry API',
              defaults: {
                  name: 'npm',
              },
              inputs: ['main'],
              outputs: ['main'],
              credentials: [
                  {
                      name: 'npmApi',
                      required: false,
                  },
              ],
              requestDefaults: {
                  baseURL: '={{ $credentials.registryUrl }}',
              },
              properties: [
                  {
                      displayName: 'Resource',
                      name: 'resource',
                      type: 'options',
                      noDataExpression: true,
                      options: [
                          {
                              name: 'Package',
                              value: 'package',
                          },
                          {
                              name: 'Distribution Tag',
                              value: 'distTag',
                          },
                      ],
                      default: 'package',
                  },
                  ...PackageDescription_1.packageOperations,
                  ...PackageDescription_1.packageFields,
                  ...DistTagDescription_1.distTagOperations,
                  ...DistTagDescription_1.distTagFields,
              ],
          };
      }
  }
  exports.Npm = Npm;
  //# sourceMappingURL=Npm.node.js.map

documentation_markdown:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: npm node documentation
  description: Learn how to use the npm node in n8n. Follow technical documentation to integrate npm node into your workflows.
  contentType: [integration, reference]
  ---

  # npm node

  Use the npm node to automate work in npm, and integrate npm with other applications.

  On this page, you'll find a list of operations the npm node supports and links to more resources.

  /// note | Credentials
  Refer to [npm credentials](/integrations/builtin/credentials/npm.md) for guidance on setting up authentication. 
  ///

  ## Operations

  * Package
  	* Get Package Metadata
  	* Get Package Versions
  	* Search for Packages
  * Distribution Tag
  	* Get All Tags
  	* Update a Tag

  ## Templates and examples

  <!-- see https://www.notion.so/n8n/Pull-in-templates-for-the-integrations-pages-37c716837b804d30a33b47475f6e3780 -->
  [[ templatesWidget(page.title, 'npm') ]]

  ## Related resources

  Refer to [npm's documentation](https://docs.npmjs.com/){:target=_blank .external-link} for more information about the service.

  --8<-- "_snippets/integrations/builtin/app-nodes/operation-not-supported.md"

example_workflow:
  {"nodes":[{"parameters":{},"type":"n8n-nodes-base.node","typeVersion":1,"position":[220,120],"id":"bf89e10e-42a5-4196-9e7d-20555e5897cc","name":"Node"}],"connections":{"Node":{"main":[[]]}},"pinData":{},"meta":{"templateCredsSetupCompleted":true,"instanceId":"7217828093b3abc32cec2a9449706a1f4068280aefbba020bac3e1fb91f7af2e"}}


node_type: n8n-nodes-base.Onfleet
name: Onfleet
display_name: Onfleet
description: Consume Onfleet API
category: input
icon: file:Onfleet.svg
code_hash: 38b9adce484581a415e2163aa3d1f339eca8901c9bf4f36996647abb90d58f75
documentation_url: https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.onfleettrigger
example_parameters: {}
properties_schema: []
package_name: n8n-nodes-base
version: 1.0
extracted_at: 2025-06-08 09:18:19
updated_at: 2025-06-08 09:18:19
source_code:
  "use strict";
  Object.defineProperty(exports, "__esModule", { value: true });
  exports.Onfleet = void 0;
  const TaskDescription_1 = require("./descriptions/TaskDescription");
  const DestinationDescription_1 = require("./descriptions/DestinationDescription");
  const GenericFunctions_1 = require("./GenericFunctions");
  const RecipientDescription_1 = require("./descriptions/RecipientDescription");
  const OrganizationDescription_1 = require("./descriptions/OrganizationDescription");
  const AdministratorDescription_1 = require("./descriptions/AdministratorDescription");
  const HubDescription_1 = require("./descriptions/HubDescription");
  const WorkerDescription_1 = require("./descriptions/WorkerDescription");
  const ContainerDescription_1 = require("./descriptions/ContainerDescription");
  const TeamDescription_1 = require("./descriptions/TeamDescription");
  const Onfleet_1 = require("./Onfleet");
  class Onfleet {
      constructor() {
          this.description = {
              displayName: 'Onfleet',
              name: 'onfleet',
              icon: 'file:Onfleet.svg',
              group: ['input'],
              version: 1,
              subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
              description: 'Consume Onfleet API',
              defaults: {
                  name: 'Onfleet',
              },
              inputs: ['main'],
              outputs: ['main'],
              credentials: [
                  {
                      name: 'onfleetApi',
                      required: true,
                      testedBy: 'onfleetApiTest',
                  },
              ],
              properties: [
                  {
                      displayName: 'Resource',
                      name: 'resource',
                      type: 'options',
                      noDataExpression: true,
                      options: [
                          {
                              name: 'Admin',
                              value: 'admin',
                          },
                          {
                              name: 'Container',
                              value: 'container',
                          },
                          {
                              name: 'Destination',
                              value: 'destination',
                          },
                          {
                              name: 'Hub',
                              value: 'hub',
                          },
                          {
                              name: 'Organization',
                              value: 'organization',
                          },
                          {
                              name: 'Recipient',
                              value: 'recipient',
                          },
                          {
                              name: 'Task',
                              value: 'task',
                          },
                          {
                              name: 'Team',
                              value: 'team',
                          },
                          {
                              name: 'Worker',
                              value: 'worker',
                          },
                      ],
                      default: 'task',
                      description: 'The resource to perform operations on',
                  },
                  ...AdministratorDescription_1.adminOperations,
                  ...AdministratorDescription_1.adminFields,
                  ...ContainerDescription_1.containerOperations,
                  ...ContainerDescription_1.containerFields,
                  ...DestinationDescription_1.destinationOperations,
                  ...DestinationDescription_1.destinationFields,
                  ...HubDescription_1.hubOperations,
                  ...HubDescription_1.hubFields,
                  ...OrganizationDescription_1.organizationOperations,
                  ...OrganizationDescription_1.organizationFields,
                  ...RecipientDescription_1.recipientOperations,
                  ...RecipientDescription_1.recipientFields,
                  ...TaskDescription_1.taskOperations,
                  ...TaskDescription_1.taskFields,
                  ...TeamDescription_1.teamOperations,
                  ...TeamDescription_1.teamFields,
                  ...WorkerDescription_1.workerOperations,
                  ...WorkerDescription_1.workerFields,
              ],
          };
          this.methods = {
              credentialTest: {
                  async onfleetApiTest(credential) {
                      const credentials = credential.data;
                      const options = {
                          headers: {
                              'Content-Type': 'application/json',
                              'User-Agent': 'n8n-onfleet',
                          },
                          auth: {
                              user: credentials.apiKey,
                              pass: '',
                          },
                          method: 'GET',
                          uri: 'https://onfleet.com/api/v2/auth/test',
                          json: true,
                      };
                      try {
                          await this.helpers.request(options);
                          return {
                              status: 'OK',
                              message: 'Authentication successful',
                          };
                      }
                      catch (error) {
                          return {
                              status: 'Error',
                              message: `Auth settings are not valid: ${error}`,
                          };
                      }
                  },
              },
              loadOptions: GenericFunctions_1.resourceLoaders,
          };
      }
      async execute() {
          const resource = this.getNodeParameter('resource', 0);
          const operation = this.getNodeParameter('operation', 0);
          const items = this.getInputData();
          const operations = {
              task: Onfleet_1.Onfleet.executeTaskOperations,
              destination: Onfleet_1.Onfleet.executeDestinationOperations,
              organization: Onfleet_1.Onfleet.executeOrganizationOperations,
              admin: Onfleet_1.Onfleet.executeAdministratorOperations,
              recipient: Onfleet_1.Onfleet.executeRecipientOperations,
              hub: Onfleet_1.Onfleet.executeHubOperations,
              worker: Onfleet_1.Onfleet.executeWorkerOperations,
              webhook: Onfleet_1.Onfleet.executeWebhookOperations,
              container: Onfleet_1.Onfleet.executeContainerOperations,
              team: Onfleet_1.Onfleet.executeTeamOperations,
          };
          const responseData = await operations[resource].call(this, `${resource}s`, operation, items);
          return [this.helpers.returnJsonArray(responseData)];
      }
  }
  exports.Onfleet = Onfleet;
  //# sourceMappingURL=Onfleet.node.js.map

documentation_markdown:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Onfleet Trigger node documentation
  description: Learn how to use the Onfleet Trigger node in n8n. Follow technical documentation to integrate Onfleet Trigger node into your workflows.
  contentType: [integration, reference]
  ---

  # Onfleet Trigger node

  [Onfleet](https://onfleet.com/){:target=_blank .external-link} is a logistics platform offering a last-mile delivery solution.

  /// note | Credentials
  You can find authentication information for this node [here](/integrations/builtin/credentials/onfleet.md).
  ///

  ///  note  | Examples and templates
  For usage examples and templates to help you get started, refer to n8n's [Onfleet Trigger integrations](https://n8n.io/integrations/onfleet-trigger/){:target=_blank .external-link} page.
  ///

  ## Events

  Trigger a workflow on:

  * SMS recipient opt out
  * SMS recipient response missed
  * Task arrival
  * Task assigned
  * Task cloned
  * Task completed
  * Task created
  * Task delayed
  * Task ETA
  * Task failed
  * Task started
  * Task unassigned
  * Task updated
  * Worker created
  * Worker deleted
  * Worker duty

example_workflow:
  {"nodes":[{"parameters":{},"type":"n8n-nodes-base.node","typeVersion":1,"position":[220,120],"id":"10585d69-3ecb-4611-85b4-b1c95c2c7ed4","name":"Node"}],"connections":{"Node":{"main":[[]]}},"pinData":{},"meta":{"templateCredsSetupCompleted":true,"instanceId":"f4d47cb7914c373636e51573b4a342f45de253e57462e2c7e412ada85acdcfdc"}}


node_type: n8n-nodes-base.OpenAi
name: OpenAi
display_name: OpenAI
description: Consume Open AI
category: transform
icon: file:openAi.svg
code_hash: ab879a65a91c06570e906c166bce961a1f614a01acb649d549a4467e09dfc807
example_parameters: {}
properties_schema: []
package_name: n8n-nodes-base
version: 1.0
extracted_at: 2025-06-08 09:18:19
updated_at: 2025-06-08 09:18:19
source_code:
  "use strict";
  Object.defineProperty(exports, "__esModule", { value: true });
  exports.OpenAi = void 0;
  const ImageDescription_1 = require("./ImageDescription");
  const TextDescription_1 = require("./TextDescription");
  const ChatDescription_1 = require("./ChatDescription");
  class OpenAi {
      constructor() {
          this.description = {
              displayName: 'OpenAI',
              name: 'openAi',
              icon: 'file:openAi.svg',
              group: ['transform'],
              version: 1,
              subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
              description: 'Consume Open AI',
              defaults: {
                  name: 'OpenAI',
              },
              inputs: ['main'],
              outputs: ['main'],
              credentials: [
                  {
                      name: 'openAiApi',
                      required: true,
                  },
              ],
              requestDefaults: {
                  ignoreHttpStatusErrors: true,
                  baseURL: 'https://api.openai.com',
              },
              properties: [
                  {
                      displayName: 'Resource',
                      name: 'resource',
                      type: 'options',
                      noDataExpression: true,
                      options: [
                          {
                              name: 'Chat',
                              value: 'chat',
                          },
                          {
                              name: 'Image',
                              value: 'image',
                          },
                          {
                              name: 'Text',
                              value: 'text',
                          },
                      ],
                      default: 'text',
                  },
                  ...ChatDescription_1.chatOperations,
                  ...ChatDescription_1.chatFields,
                  ...ImageDescription_1.imageOperations,
                  ...ImageDescription_1.imageFields,
                  ...TextDescription_1.textOperations,
                  ...TextDescription_1.textFields,
              ],
          };
      }
  }
  exports.OpenAi = OpenAi;
  //# sourceMappingURL=OpenAi.node.js.map

documentation_markdown:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Azure OpenAI Chat Model node documentation
  description: Learn how to use the Azure OpenAI Chat Model node in n8n. Follow technical documentation to integrate Azure OpenAI Chat Model node into your workflows.
  contentType: [integration, reference]
  priority: medium
  ---

  # Azure OpenAI Chat Model node

  Use the Azure OpenAI Chat Model node to use OpenAI's chat models with conversational [agents](/glossary.md#ai-agent).

  On this page, you'll find the node parameters for the Azure OpenAI Chat Model node, and links to more resources.

  /// note | Credentials
  You can find authentication information for this node [here](/integrations/builtin/credentials/azureopenai.md).
  ///

  --8<-- "_snippets/integrations/builtin/cluster-nodes/sub-node-expression-resolution.md"

  ## Node parameters

  * **Model**: Select the model to use to generate the completion.

  ## Node options

  * **Frequency Penalty**: Use this option to control the chances of the model repeating itself. Higher values reduce the chance of the model repeating itself.
  * **Maximum Number of Tokens**: Enter the maximum number of tokens used, which sets the completion length.
  * **Response Format**: Choose **Text** or **JSON**. **JSON** ensures the model returns valid JSON.
  * **Presence Penalty**: Use this option to control the chances of the model talking about new topics. Higher values increase the chance of the model talking about new topics.
  * **Sampling Temperature**: Use this option to control the randomness of the sampling process. A higher temperature creates more diverse sampling, but increases the risk of hallucinations.
  * **Timeout**: Enter the maximum request time in milliseconds.
  * **Max Retries**: Enter the maximum number of times to retry a request.
  * **Top P**: Use this option to set the probability the completion should use. Use a lower value to ignore less probable options. 

  ## Templates and examples

  <!-- see https://www.notion.so/n8n/Pull-in-templates-for-the-integrations-pages-37c716837b804d30a33b47475f6e3780 -->
  [[ templatesWidget(page.title, 'azure-openai-chat-model') ]]

  ## Related resources

  Refer to [LangChains's Azure OpenAI documentation](https://js.langchain.com/docs/integrations/chat/azure){:target=_blank .external-link} for more information about the service.

  --8<-- "_snippets/integrations/builtin/cluster-nodes/langchain-overview-link.md"
  --8<-- "_glossary/ai-glossary.md"

documentation_url:
  https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatazureopenai

example_workflow:
  {"nodes":[{"parameters":{},"type":"n8n-nodes-base.node","typeVersion":1,"position":[220,120],"id":"dd2a2b19-6264-4175-a447-b1f00af2f943","name":"Node"}],"connections":{"Node":{"main":[[]]}},"pinData":{},"meta":{"templateCredsSetupCompleted":true,"instanceId":"adbbc9b33eb7ab494b875a7ff5fc15281906a3d35397f57b62a737e9331a41fa"}}


node_type: n8n-nodes-base.OpenThesaurus
name: OpenThesaurus
display_name: OpenThesaurus
description: Get synonmns for German words using the OpenThesaurus API
category: output
icon: file:openthesaurus.png
code_hash: 2677b6788bc843f9af85a4a31778333f3cf8e2aa1ae5bf09d7610abb8494981e
documentation_url: https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.openthesaurus
example_parameters: {}
properties_schema: []
package_name: n8n-nodes-base
version: 1.0
extracted_at: 2025-06-08 09:18:19
updated_at: 2025-06-08 09:18:19
source_code:
  "use strict";
  Object.defineProperty(exports, "__esModule", { value: true });
  exports.OpenThesaurus = void 0;
  const GenericFunctions_1 = require("./GenericFunctions");
  class OpenThesaurus {
      constructor() {
          this.description = {
              displayName: 'OpenThesaurus',
              name: 'openThesaurus',
              icon: 'file:openthesaurus.png',
              group: ['output'],
              version: 1,
              subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
              description: 'Get synonmns for German words using the OpenThesaurus API',
              defaults: {
                  name: 'OpenThesaurus',
              },
              inputs: ['main'],
              outputs: ['main'],
              properties: [
                  {
                      displayName: 'Operation',
                      name: 'operation',
                      type: 'options',
                      noDataExpression: true,
                      options: [
                          {
                              name: 'Get Synonyms',
                              value: 'getSynonyms',
                              description: 'Get synonyms for a German word in German',
                              action: 'Get synonyms',
                          },
                      ],
                      default: 'getSynonyms',
                  },
                  {
                      displayName: 'Text',
                      name: 'text',
                      type: 'string',
                      default: '',
                      description: 'The word to get synonyms for',
                      required: true,
                      displayOptions: {
                          show: {
                              operation: ['getSynonyms'],
                          },
                      },
                  },
                  {
                      displayName: 'Options',
                      name: 'options',
                      type: 'collection',
                      placeholder: 'Add Options',
                      displayOptions: {
                          show: {
                              operation: ['getSynonyms'],
                          },
                      },
                      default: {},
                      options: [
                          {
                              displayName: 'Baseform',
                              name: 'baseform',
                              type: 'boolean',
                              default: false,
                              description: 'Specifies the basic form for the search term if it is not already a basic form',
                          },
                          {
                              displayName: 'Similar',
                              name: 'similar',
                              type: 'boolean',
                              default: false,
                              description: 'This also returns up to five similarly written words for each answer. This is useful to be able to make a suggestion to the user in the event of a possible typing error.',
                          },
                          {
                              displayName: 'Starts With',
                              name: 'startswith',
                              type: 'boolean',
                              default: false,
                              description: 'Like substring = true, but only finds words that begin with the specified search term',
                          },
                          {
                              displayName: 'Substring',
                              name: 'substring',
                              type: 'boolean',
                              default: false,
                              description: 'Whether up to ten words are returned for each answer that only contain the search term as a partial word',
                          },
                          {
                              displayName: 'Substring From Results',
                              name: 'substringFromResults',
                              type: 'number',
                              default: 0,
                              description: 'Specifies from which entry the partial word hits are to be returned. Only works together with substring = true.',
                          },
                          {
                              displayName: 'Substring Max Results',
                              name: 'substringMaxResults',
                              type: 'number',
                              typeOptions: {
                                  maxValue: 250,
                              },
                              default: 10,
                              description: 'Specifies how many partial word hits should be returned in total. Only works together with substring = true.',
                          },
                          {
                              displayName: 'Subsynsets',
                              name: 'subsynsets',
                              type: 'boolean',
                              default: false,
                              description: 'Whether each synonym group has its (optional) sub-terms supplied',
                          },
                          {
                              displayName: 'Supersynsets',
                              name: 'supersynsets',
                              type: 'boolean',
                              default: false,
                              description: 'Whether each synonym group is supplied with its (optional) generic terms',
                          },
                      ],
                  },
              ],
          };
      }
      async execute() {
          const items = this.getInputData();
          const returnData = [];
          const length = items.length;
          const qs = {};
          let responseData;
          const operation = this.getNodeParameter('operation', 0);
          for (let i = 0; i < length; i++) {
              try {
                  if (operation === 'getSynonyms') {
                      const text = this.getNodeParameter('text', i);
                      const options = this.getNodeParameter('options', i);
                      qs.q = text;
                      Object.assign(qs, options);
                      responseData = await GenericFunctions_1.openThesaurusApiRequest.call(this, 'GET', '/synonyme/search', {}, qs);
                      responseData = responseData.synsets;
                  }
                  const executionData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray(responseData), { itemData: { item: i } });
                  returnData.push(...executionData);
              }
              catch (error) {
                  if (this.continueOnFail()) {
                      const executionErrorData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } });
                      returnData.push(...executionErrorData);
                      continue;
                  }
                  throw error;
              }
          }
          return [returnData];
      }
  }
  exports.OpenThesaurus = OpenThesaurus;
  //# sourceMappingURL=OpenThesaurus.node.js.map

documentation_markdown:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: OpenThesaurus node documentation
  description: Learn how to use the OpenThesaurus node in n8n. Follow technical documentation to integrate OpenThesaurus node into your workflows.
  contentType: [integration, reference]
  ---

  # OpenThesaurus node

  Use the OpenThesaurus node to automate work in OpenThesaurus, and integrate OpenThesaurus with other applications. n8n supports synonym look-up for German words. 

  On this page, you'll find a list of operations the OpenThesaurus node supports and links to more resources.

  /// note | Credentials
  OpenThesaurus node doesn't require authentication. 
  ///

  ## Operations

  * Get synonyms for a German word in German

  ## Templates and examples

  <!-- see https://www.notion.so/n8n/Pull-in-templates-for-the-integrations-pages-37c716837b804d30a33b47475f6e3780 -->
  [[ templatesWidget(page.title, 'openthesaurus') ]]

example_workflow:
  {"nodes":[{"parameters":{},"type":"n8n-nodes-base.node","typeVersion":1,"position":[220,120],"id":"b0c97179-595d-46b4-915d-3fe178ca3d07","name":"Node"}],"connections":{"Node":{"main":[[]]}},"pinData":{},"meta":{"templateCredsSetupCompleted":true,"instanceId":"09283adc483eae3f4fd85f0a28137d9f413ccdd20d6df6b0d6478cbffcefc3e0"}}


node_type: n8n-nodes-base.OpenWeatherMap
name: OpenWeatherMap
display_name: OpenWeatherMap
description: Gets current and future weather information
category: input
icon: fa:sun
code_hash: 030deaa4964a0c1de6ebf4f3ab30894d4cecb9d9867ba38910083cda34889b9c
documentation_url: https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.openweathermap
example_parameters: {}
properties_schema: []
package_name: n8n-nodes-base
version: 1.0
extracted_at: 2025-06-08 09:18:19
updated_at: 2025-06-08 09:18:19
source_code:
  "use strict";
  Object.defineProperty(exports, "__esModule", { value: true });
  exports.OpenWeatherMap = void 0;
  const n8n_workflow_1 = require("n8n-workflow");
  class OpenWeatherMap {
      constructor() {
          this.description = {
              displayName: 'OpenWeatherMap',
              name: 'openWeatherMap',
              icon: 'fa:sun',
              group: ['input'],
              version: 1,
              description: 'Gets current and future weather information',
              defaults: {
                  name: 'OpenWeatherMap',
                  color: '#554455',
              },
              inputs: ['main'],
              outputs: ['main'],
              credentials: [
                  {
                      name: 'openWeatherMapApi',
                      required: true,
                  },
              ],
              properties: [
                  {
                      displayName: 'Operation',
                      name: 'operation',
                      type: 'options',
                      noDataExpression: true,
                      options: [
                          {
                              name: 'Current Weather',
                              value: 'currentWeather',
                              description: 'Returns the current weather data',
                              action: 'Return current weather data',
                          },
                          {
                              name: '5 Day Forecast',
                              value: '5DayForecast',
                              description: 'Returns the weather data for the next 5 days',
                              action: 'Return weather data for the next 5 days',
                          },
                      ],
                      default: 'currentWeather',
                  },
                  {
                      displayName: 'Format',
                      name: 'format',
                      type: 'options',
                      options: [
                          {
                              name: 'Imperial',
                              value: 'imperial',
                              description: 'Fahrenheit | miles/hour',
                          },
                          {
                              name: 'Metric',
                              value: 'metric',
                              description: 'Celsius | meter/sec',
                          },
                          {
                              name: 'Scientific',
                              value: 'standard',
                              description: 'Kelvin | meter/sec',
                          },
                      ],
                      default: 'metric',
                      description: 'The format in which format the data should be returned',
                  },
                  {
                      displayName: 'Location Selection',
                      name: 'locationSelection',
                      type: 'options',
                      options: [
                          {
                              name: 'City Name',
                              value: 'cityName',
                          },
                          {
                              name: 'City ID',
                              value: 'cityId',
                          },
                          {
                              name: 'Coordinates',
                              value: 'coordinates',
                          },
                          {
                              name: 'Zip Code',
                              value: 'zipCode',
                          },
                      ],
                      default: 'cityName',
                      description: 'How to define the location for which to return the weather',
                  },
                  {
                      displayName: 'City',
                      name: 'cityName',
                      type: 'string',
                      default: '',
                      placeholder: 'berlin,de',
                      required: true,
                      displayOptions: {
                          show: {
                              locationSelection: ['cityName'],
                          },
                      },
                      description: 'The name of the city to return the weather of',
                  },
                  {
                      displayName: 'City ID',
                      name: 'cityId',
                      type: 'number',
                      default: 160001123,
                      required: true,
                      displayOptions: {
                          show: {
                              locationSelection: ['cityId'],
                          },
                      },
                      description: 'The ID of city to return the weather of. List can be downloaded here: http://bulk.openweathermap.org/sample/.',
                  },
                  {
                      displayName: 'Latitude',
                      name: 'latitude',
                      type: 'string',
                      default: '',
                      placeholder: '13.39',
                      required: true,
                      displayOptions: {
                          show: {
                              locationSelection: ['coordinates'],
                          },
                      },
                      description: 'The latitude of the location to return the weather of',
                  },
                  {
                      displayName: 'Longitude',
                      name: 'longitude',
                      type: 'string',
                      default: '',
                      placeholder: '52.52',
                      required: true,
                      displayOptions: {
                          show: {
                              locationSelection: ['coordinates'],
                          },
                      },
                      description: 'The longitude of the location to return the weather of',
                  },
                  {
                      displayName: 'Zip Code',
                      name: 'zipCode',
                      type: 'string',
                      default: '',
                      placeholder: '10115,de',
                      required: true,
                      displayOptions: {
                          show: {
                              locationSelection: ['zipCode'],
                          },
                      },
                      description: 'The ID of city to return the weather of. List can be downloaded here: http://bulk.openweathermap.org/sample/.',
                  },
                  {
                      displayName: 'Language',
                      name: 'language',
                      type: 'string',
                      default: '',
                      placeholder: 'en',
                      description: 'The two letter language code to get your output in (eg. en, de, ...).',
                  },
              ],
          };
      }
      async execute() {
          const items = this.getInputData();
          const returnData = [];
          const credentials = await this.getCredentials('openWeatherMapApi');
          const operation = this.getNodeParameter('operation', 0);
          let endpoint = '';
          let locationSelection;
          let language;
          let qs;
          for (let i = 0; i < items.length; i++) {
              try {
                  qs = {
                      APPID: credentials.accessToken,
                      units: this.getNodeParameter('format', i),
                  };
                  locationSelection = this.getNodeParameter('locationSelection', i);
                  if (locationSelection === 'cityName') {
                      qs.q = this.getNodeParameter('cityName', i);
                  }
                  else if (locationSelection === 'cityId') {
                      qs.id = this.getNodeParameter('cityId', i);
                  }
                  else if (locationSelection === 'coordinates') {
                      qs.lat = this.getNodeParameter('latitude', i);
                      qs.lon = this.getNodeParameter('longitude', i);
                  }
                  else if (locationSelection === 'zipCode') {
                      qs.zip = this.getNodeParameter('zipCode', i);
                  }
                  else {
                      throw new n8n_workflow_1.NodeOperationError(this.getNode(), `The locationSelection "${locationSelection}" is not known!`, { itemIndex: i });
                  }
                  language = this.getNodeParameter('language', i);
                  if (language) {
                      qs.lang = language;
                  }
                  if (operation === 'currentWeather') {
                      endpoint = 'weather';
                  }
                  else if (operation === '5DayForecast') {
                      endpoint = 'forecast';
                  }
                  else {
                      throw new n8n_workflow_1.NodeOperationError(this.getNode(), `The operation "${operation}" is not known!`, { itemIndex: i });
                  }
                  const options = {
                      method: 'GET',
                      qs,
                      uri: `https://api.openweathermap.org/data/2.5/${endpoint}`,
                      json: true,
                  };
                  let responseData;
                  try {
                      responseData = await this.helpers.request(options);
                  }
                  catch (error) {
                      throw new n8n_workflow_1.NodeApiError(this.getNode(), error);
                  }
                  const executionData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray(responseData), { itemData: { item: i } });
                  returnData.push(...executionData);
              }
              catch (error) {
                  if (this.continueOnFail()) {
                      returnData.push({ json: { error: error.message } });
                      continue;
                  }
                  throw error;
              }
          }
          return [returnData];
      }
  }
  exports.OpenWeatherMap = OpenWeatherMap;
  //# sourceMappingURL=OpenWeatherMap.node.js.map

documentation_markdown:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: OpenWeatherMap node documentation
  description: Learn how to use the OpenWeatherMap node in n8n. Follow technical documentation to integrate OpenWeatherMap node into your workflows.
  contentType: [integration, reference]
  priority: medium
  ---

  # OpenWeatherMap node

  Use the OpenWeatherMap node to automate work in OpenWeatherMap, and integrate OpenWeatherMap with other applications. n8n supports retrieving current and upcoming weather data with OpenWeatherMap.

  On this page, you'll find a list of operations the OpenWeatherMap node supports and links to more resources.

  /// note | Credentials
  Refer to [OpenWeatherMap credentials](/integrations/builtin/credentials/openweathermap.md) for guidance on setting up authentication. 
  ///

  --8<-- "_snippets/integrations/builtin/app-nodes/ai-tools.md"

  ## Operations

  * Returns the current weather data
  * Returns the weather data for the next 5 days

  ## Templates and examples

  <!-- see https://www.notion.so/n8n/Pull-in-templates-for-the-integrations-pages-37c716837b804d30a33b47475f6e3780 -->
  [[ templatesWidget(page.title, 'openweathermap') ]]

example_workflow:
  {"nodes":[{"parameters":{},"type":"n8n-nodes-base.node","typeVersion":1,"position":[220,120],"id":"225f7799-24b5-4a10-8878-c70b05f0efaf","name":"Node"}],"connections":{"Node":{"main":[[]]}},"pinData":{},"meta":{"templateCredsSetupCompleted":true,"instanceId":"09323b36928484671e43279708417822d4f779b426bfde54d606714396541544"}}


node_type: n8n-nodes-base.Odoo
name: Odoo
display_name: Odoo
description: Consume Odoo API
category: transform
icon: file:odoo.svg
code_hash: 2e1601049a43d1b157fc57aa76bb1f2fb632da84656f0641b0555435371afe55
documentation_url: https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.odoo
example_parameters: {}
properties_schema: []
package_name: n8n-nodes-base
version: 1.0
extracted_at: 2025-06-08 09:18:19
updated_at: 2025-06-08 09:18:19
source_code:
  "use strict";
  Object.defineProperty(exports, "__esModule", { value: true });
  exports.Odoo = void 0;
  const n8n_workflow_1 = require("n8n-workflow");
  const descriptions_1 = require("./descriptions");
  const GenericFunctions_1 = require("./GenericFunctions");
  const change_case_1 = require("change-case");
  class Odoo {
      constructor() {
          this.description = {
              displayName: 'Odoo',
              name: 'odoo',
              icon: 'file:odoo.svg',
              group: ['transform'],
              version: 1,
              description: 'Consume Odoo API',
              subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
              defaults: {
                  name: 'Odoo',
              },
              inputs: ['main'],
              outputs: ['main'],
              credentials: [
                  {
                      name: 'odooApi',
                      required: true,
                      testedBy: 'odooApiTest',
                  },
              ],
              properties: [
                  {
                      displayName: 'Resource',
                      name: 'resource',
                      type: 'options',
                      default: 'contact',
                      noDataExpression: true,
                      options: [
                          {
                              name: 'Contact',
                              value: 'contact',
                          },
                          {
                              name: 'Custom Resource',
                              value: 'custom',
                          },
                          {
                              name: 'Note',
                              value: 'note',
                          },
                          {
                              name: 'Opportunity',
                              value: 'opportunity',
                          },
                      ],
                  },
                  ...descriptions_1.customResourceOperations,
                  ...descriptions_1.customResourceDescription,
                  ...descriptions_1.opportunityOperations,
                  ...descriptions_1.opportunityDescription,
                  ...descriptions_1.contactOperations,
                  ...descriptions_1.contactDescription,
                  ...descriptions_1.noteOperations,
                  ...descriptions_1.noteDescription,
              ],
          };
          this.methods = {
              loadOptions: {
                  async getModelFields() {
                      let resource;
                      resource = this.getCurrentNodeParameter('resource');
                      if (resource === 'custom') {
                          resource = this.getCurrentNodeParameter('customResource');
                          if (!resource)
                              return [];
                      }
                      const credentials = await this.getCredentials('odooApi');
                      const url = credentials.url;
                      const username = credentials.username;
                      const password = credentials.password;
                      const db = (0, GenericFunctions_1.odooGetDBName)(credentials.db, url);
                      const userID = await GenericFunctions_1.odooGetUserID.call(this, db, username, password, url);
                      const responce = await GenericFunctions_1.odooGetModelFields.call(this, db, userID, password, resource, url);
                      const options = Object.values(responce).map((field) => {
                          const optionField = field;
                          let name = '';
                          try {
                              name = (0, change_case_1.capitalCase)(optionField.name);
                          }
                          catch (error) {
                              name = optionField.name;
                          }
                          return {
                              name,
                              value: optionField.name,
                              description: `name: ${optionField === null || optionField === void 0 ? void 0 : optionField.name}, type: ${optionField === null || optionField === void 0 ? void 0 : optionField.type} required: ${optionField === null || optionField === void 0 ? void 0 : optionField.required}`,
                          };
                      });
                      return options.sort((a, b) => { var _a; return ((_a = a.name) === null || _a === void 0 ? void 0 : _a.localeCompare(b.name)) || 0; });
                  },
                  async getModels() {
                      const credentials = await this.getCredentials('odooApi');
                      const url = credentials.url;
                      const username = credentials.username;
                      const password = credentials.password;
                      const db = (0, GenericFunctions_1.odooGetDBName)(credentials.db, url);
                      const userID = await GenericFunctions_1.odooGetUserID.call(this, db, username, password, url);
                      const body = {
                          jsonrpc: '2.0',
                          method: 'call',
                          params: {
                              service: 'object',
                              method: 'execute',
                              args: [
                                  db,
                                  userID,
                                  password,
                                  'ir.model',
                                  'search_read',
                                  [],
                                  ['name', 'model', 'modules'],
                              ],
                          },
                          id: Math.floor(Math.random() * 100),
                      };
                      const responce = (await GenericFunctions_1.odooJSONRPCRequest.call(this, body, url));
                      const options = responce.map((model) => {
                          return {
                              name: model.name,
                              value: model.model,
                              description: `model: ${model.model}<br> modules: ${model.modules}`,
                          };
                      });
                      return options;
                  },
                  async getStates() {
                      const credentials = await this.getCredentials('odooApi');
                      const url = credentials.url;
                      const username = credentials.username;
                      const password = credentials.password;
                      const db = (0, GenericFunctions_1.odooGetDBName)(credentials.db, url);
                      const userID = await GenericFunctions_1.odooGetUserID.call(this, db, username, password, url);
                      const body = {
                          jsonrpc: '2.0',
                          method: 'call',
                          params: {
                              service: 'object',
                              method: 'execute',
                              args: [db, userID, password, 'res.country.state', 'search_read', [], ['id', 'name']],
                          },
                          id: Math.floor(Math.random() * 100),
                      };
                      const responce = (await GenericFunctions_1.odooJSONRPCRequest.call(this, body, url));
                      const options = responce.map((state) => {
                          return {
                              name: state.name,
                              value: state.id,
                          };
                      });
                      return options.sort((a, b) => { var _a; return ((_a = a.name) === null || _a === void 0 ? void 0 : _a.localeCompare(b.name)) || 0; });
                  },
                  async getCountries() {
                      const credentials = await this.getCredentials('odooApi');
                      const url = credentials.url;
                      const username = credentials.username;
                      const password = credentials.password;
                      const db = (0, GenericFunctions_1.odooGetDBName)(credentials.db, url);
                      const userID = await GenericFunctions_1.odooGetUserID.call(this, db, username, password, url);
                      const body = {
                          jsonrpc: '2.0',
                          method: 'call',
                          params: {
                              service: 'object',
                              method: 'execute',
                              args: [db, userID, password, 'res.country', 'search_read', [], ['id', 'name']],
                          },
                          id: Math.floor(Math.random() * 100),
                      };
                      const responce = (await GenericFunctions_1.odooJSONRPCRequest.call(this, body, url));
                      const options = responce.map((country) => {
                          return {
                              name: country.name,
                              value: country.id,
                          };
                      });
                      return options.sort((a, b) => { var _a; return ((_a = a.name) === null || _a === void 0 ? void 0 : _a.localeCompare(b.name)) || 0; });
                  },
              },
              credentialTest: {
                  async odooApiTest(credential) {
                      const credentials = credential.data;
                      try {
                          const body = {
                              jsonrpc: '2.0',
                              method: 'call',
                              params: {
                                  service: 'common',
                                  method: 'login',
                                  args: [
                                      (0, GenericFunctions_1.odooGetDBName)(credentials === null || credentials === void 0 ? void 0 : credentials.db, credentials === null || credentials === void 0 ? void 0 : credentials.url),
                                      credentials === null || credentials === void 0 ? void 0 : credentials.username,
                                      credentials === null || credentials === void 0 ? void 0 : credentials.password,
                                  ],
                              },
                              id: Math.floor(Math.random() * 100),
                          };
                          const options = {
                              headers: {
                                  'User-Agent': 'n8n',
                                  Connection: 'keep-alive',
                                  Accept: '*/*',
                                  'Content-Type': 'application/json',
                              },
                              method: 'POST',
                              body,
                              uri: `${(credentials === null || credentials === void 0 ? void 0 : credentials.url).replace(/\/$/, '')}/jsonrpc`,
                              json: true,
                          };
                          const result = await this.helpers.request(options);
                          if (result.error || !result.result) {
                              return {
                                  status: 'Error',
                                  message: 'Credentials are not valid',
                              };
                          }
                          else if (result.error) {
                              return {
                                  status: 'Error',
                                  message: `Credentials are not valid: ${result.error.data.message}`,
                              };
                          }
                      }
                      catch (error) {
                          return {
                              status: 'Error',
                              message: `Settings are not valid: ${error}`,
                          };
                      }
                      return {
                          status: 'OK',
                          message: 'Authentication successful!',
                      };
                  },
              },
          };
      }
      async execute() {
          let items = this.getInputData();
          items = (0, n8n_workflow_1.deepCopy)(items);
          const returnData = [];
          let responseData;
          const resource = this.getNodeParameter('resource', 0);
          const operation = this.getNodeParameter('operation', 0);
          const credentials = await this.getCredentials('odooApi');
          const url = credentials.url.replace(/\/$/, '');
          const username = credentials.username;
          const password = credentials.password;
          const db = (0, GenericFunctions_1.odooGetDBName)(credentials.db, url);
          const userID = await GenericFunctions_1.odooGetUserID.call(this, db, username, password, url);
          for (let i = 0; i < items.length; i++) {
              try {
                  if (resource === 'contact') {
                      if (operation === 'create') {
                          let additionalFields = this.getNodeParameter('additionalFields', i);
                          if (additionalFields.address) {
                              const addressFields = additionalFields.address.value;
                              if (addressFields) {
                                  additionalFields = {
                                      ...additionalFields,
                                      ...addressFields,
                                  };
                              }
                              delete additionalFields.address;
                          }
                          const name = this.getNodeParameter('contactName', i);
                          const fields = {
                              name,
                              ...additionalFields,
                          };
                          responseData = await GenericFunctions_1.odooCreate.call(this, db, userID, password, resource, operation, url, fields);
                      }
                      if (operation === 'delete') {
                          const contactId = this.getNodeParameter('contactId', i);
                          responseData = await GenericFunctions_1.odooDelete.call(this, db, userID, password, resource, operation, url, contactId);
                      }
                      if (operation === 'get') {
                          const contactId = this.getNodeParameter('contactId', i);
                          const options = this.getNodeParameter('options', i);
                          const fields = options.fieldsList || [];
                          responseData = await GenericFunctions_1.odooGet.call(this, db, userID, password, resource, operation, url, contactId, fields);
                      }
                      if (operation === 'getAll') {
                          const returnAll = this.getNodeParameter('returnAll', i);
                          const options = this.getNodeParameter('options', i);
                          const fields = options.fieldsList || [];
                          if (returnAll) {
                              responseData = await GenericFunctions_1.odooGetAll.call(this, db, userID, password, resource, operation, url, undefined, fields);
                          }
                          else {
                              const limit = this.getNodeParameter('limit', i);
                              responseData = await GenericFunctions_1.odooGetAll.call(this, db, userID, password, resource, operation, url, undefined, fields, limit);
                          }
                      }
                      if (operation === 'update') {
                          const contactId = this.getNodeParameter('contactId', i);
                          let updateFields = this.getNodeParameter('updateFields', i);
                          if (updateFields.address) {
                              const addressFields = updateFields.address.value;
                              if (addressFields) {
                                  updateFields = {
                                      ...updateFields,
                                      ...addressFields,
                                  };
                              }
                              delete updateFields.address;
                          }
                          responseData = await GenericFunctions_1.odooUpdate.call(this, db, userID, password, resource, operation, url, contactId, updateFields);
                      }
                  }
                  if (resource === 'custom') {
                      const customResource = this.getNodeParameter('customResource', i);
                      if (operation === 'create') {
                          const fields = this.getNodeParameter('fieldsToCreateOrUpdate', i);
                          responseData = await GenericFunctions_1.odooCreate.call(this, db, userID, password, customResource, operation, url, (0, GenericFunctions_1.processNameValueFields)(fields));
                      }
                      if (operation === 'delete') {
                          const customResourceId = this.getNodeParameter('customResourceId', i);
                          responseData = await GenericFunctions_1.odooDelete.call(this, db, userID, password, customResource, operation, url, customResourceId);
                      }
                      if (operation === 'get') {
                          const customResourceId = this.getNodeParameter('customResourceId', i);
                          const options = this.getNodeParameter('options', i);
                          const fields = options.fieldsList || [];
                          responseData = await GenericFunctions_1.odooGet.call(this, db, userID, password, customResource, operation, url, customResourceId, fields);
                      }
                      if (operation === 'getAll') {
                          const returnAll = this.getNodeParameter('returnAll', i);
                          const options = this.getNodeParameter('options', i);
                          const fields = options.fieldsList || [];
                          const filter = this.getNodeParameter('filterRequest', i);
                          if (returnAll) {
                              responseData = await GenericFunctions_1.odooGetAll.call(this, db, userID, password, customResource, operation, url, filter, fields);
                          }
                          else {
                              const limit = this.getNodeParameter('limit', i);
                              responseData = await GenericFunctions_1.odooGetAll.call(this, db, userID, password, customResource, operation, url, filter, fields, limit);
                          }
                      }
                      if (operation === 'update') {
                          const customResourceId = this.getNodeParameter('customResourceId', i);
                          const fields = this.getNodeParameter('fieldsToCreateOrUpdate', i);
                          responseData = await GenericFunctions_1.odooUpdate.call(this, db, userID, password, customResource, operation, url, customResourceId, (0, GenericFunctions_1.processNameValueFields)(fields));
                      }
                  }
                  if (resource === 'note') {
                      if (operation === 'create') {
                          const memo = this.getNodeParameter('memo', i);
                          const fields = {
                              memo,
                          };
                          responseData = await GenericFunctions_1.odooCreate.call(this, db, userID, password, resource, operation, url, fields);
                      }
                      if (operation === 'delete') {
                          const noteId = this.getNodeParameter('noteId', i);
                          responseData = await GenericFunctions_1.odooDelete.call(this, db, userID, password, resource, operation, url, noteId);
                      }
                      if (operation === 'get') {
                          const noteId = this.getNodeParameter('noteId', i);
                          const options = this.getNodeParameter('options', i);
                          const fields = options.fieldsList || [];
                          responseData = await GenericFunctions_1.odooGet.call(this, db, userID, password, resource, operation, url, noteId, fields);
                      }
                      if (operation === 'getAll') {
                          const returnAll = this.getNodeParameter('returnAll', i);
                          const options = this.getNodeParameter('options', i);
                          const fields = options.fieldsList || [];
                          if (returnAll) {
                              responseData = await GenericFunctions_1.odooGetAll.call(this, db, userID, password, resource, operation, url, undefined, fields);
                          }
                          else {
                              const limit = this.getNodeParameter('limit', i);
                              responseData = await GenericFunctions_1.odooGetAll.call(this, db, userID, password, resource, operation, url, undefined, fields, limit);
                          }
                      }
                      if (operation === 'update') {
                          const noteId = this.getNodeParameter('noteId', i);
                          const memo = this.getNodeParameter('memo', i);
                          const fields = {
                              memo,
                          };
                          responseData = await GenericFunctions_1.odooUpdate.call(this, db, userID, password, resource, operation, url, noteId, fields);
                      }
                  }
                  if (resource === 'opportunity') {
                      if (operation === 'create') {
                          const additionalFields = this.getNodeParameter('additionalFields', i);
                          const name = this.getNodeParameter('opportunityName', i);
                          const fields = {
                              name,
                              ...additionalFields,
                          };
                          responseData = await GenericFunctions_1.odooCreate.call(this, db, userID, password, resource, operation, url, fields);
                      }
                      if (operation === 'delete') {
                          const opportunityId = this.getNodeParameter('opportunityId', i);
                          responseData = await GenericFunctions_1.odooDelete.call(this, db, userID, password, resource, operation, url, opportunityId);
                      }
                      if (operation === 'get') {
                          const opportunityId = this.getNodeParameter('opportunityId', i);
                          const options = this.getNodeParameter('options', i);
                          const fields = options.fieldsList || [];
                          responseData = await GenericFunctions_1.odooGet.call(this, db, userID, password, resource, operation, url, opportunityId, fields);
                      }
                      if (operation === 'getAll') {
                          const returnAll = this.getNodeParameter('returnAll', i);
                          const options = this.getNodeParameter('options', i);
                          const fields = options.fieldsList || [];
                          if (returnAll) {
                              responseData = await GenericFunctions_1.odooGetAll.call(this, db, userID, password, resource, operation, url, undefined, fields);
                          }
                          else {
                              const limit = this.getNodeParameter('limit', i);
                              responseData = await GenericFunctions_1.odooGetAll.call(this, db, userID, password, resource, operation, url, undefined, fields, limit);
                          }
                      }
                      if (operation === 'update') {
                          const opportunityId = this.getNodeParameter('opportunityId', i);
                          const updateFields = this.getNodeParameter('updateFields', i);
                          responseData = await GenericFunctions_1.odooUpdate.call(this, db, userID, password, resource, operation, url, opportunityId, updateFields);
                      }
                  }
                  if (responseData !== undefined) {
                      const executionData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray(responseData), { itemData: { item: i } });
                      returnData.push(...executionData);
                  }
              }
              catch (error) {
                  if (this.continueOnFail()) {
                      const executionData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } });
                      returnData.push(...executionData);
                      continue;
                  }
                  throw error;
              }
          }
          return [returnData];
      }
  }
  exports.Odoo = Odoo;
  //# sourceMappingURL=Odoo.node.js.map

documentation_markdown:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Odoo node documentation
  description: Learn how to use the Odoo node in n8n. Follow technical documentation to integrate Odoo node into your workflows.
  contentType: [integration, reference]
  priority: medium
  ---

  # Odoo node

  Use the Odoo node to automate work in Odoo, and integrate Odoo with other applications. n8n has built-in support for a wide range of Odoo features, including creating, updating, deleting, and getting contracts, resources, and opportunities. 

  On this page, you'll find a list of operations the Odoo node supports and links to more resources.

  /// note | Credentials
  Refer to [Odoo credentials](/integrations/builtin/credentials/odoo.md) for guidance on setting up authentication. 
  ///

  --8<-- "_snippets/integrations/builtin/app-nodes/ai-tools.md"

  ## Operations

  * Contact
      * Create a new contact
      * Delete a contact
      * Get a contact
      * Get all contacts
      * Update a contact
  * Custom Resource
      * Create a new item
      * Delete an item
      * Get an item
      * Get all items
      * Update an item
  * Note
      * Create a new note
      * Delete a note
      * Get a note
      * Get all notes
      * Update a note
  * Opportunity
      * Create a new opportunity
      * Delete an opportunity
      * Get an opportunity
      * Get all opportunities
      * Update an opportunity

  ## Templates and examples

  <!-- see https://www.notion.so/n8n/Pull-in-templates-for-the-integrations-pages-37c716837b804d30a33b47475f6e3780 -->
  [[ templatesWidget(page.title, 'odoo') ]]

example_workflow:
  {"nodes":[{"parameters":{},"type":"n8n-nodes-base.node","typeVersion":1,"position":[220,120],"id":"17095c42-d8c1-46e1-b642-81481239fa47","name":"Node"}],"connections":{"Node":{"main":[[]]}},"pinData":{},"meta":{"templateCredsSetupCompleted":true,"instanceId":"9ec555528dccfbdda887337f2a23087113eb71cf0a7831529920a6b225057536"}}


node_type: n8n-nodes-base.Oura
name: Oura
display_name: Oura
description: Consume Oura API
category: output
icon: file:oura.svg
code_hash: 3c4ad8b55a2145b2a84a4b817a39d16c29d21c18a75651654c38590046103429
documentation_url: https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.oura
example_parameters: {}
properties_schema: []
package_name: n8n-nodes-base
version: 1.0
extracted_at: 2025-06-08 09:18:21
updated_at: 2025-06-08 09:18:21
source_code:
  "use strict";
  var __importDefault = (this && this.__importDefault) || function (mod) {
      return (mod && mod.__esModule) ? mod : { "default": mod };
  };
  Object.defineProperty(exports, "__esModule", { value: true });
  exports.Oura = void 0;
  const GenericFunctions_1 = require("./GenericFunctions");
  const ProfileDescription_1 = require("./ProfileDescription");
  const SummaryDescription_1 = require("./SummaryDescription");
  const moment_1 = __importDefault(require("moment"));
  class Oura {
      constructor() {
          this.description = {
              displayName: 'Oura',
              name: 'oura',
              icon: 'file:oura.svg',
              group: ['output'],
              version: 1,
              subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
              description: 'Consume Oura API',
              defaults: {
                  name: 'Oura',
              },
              inputs: ['main'],
              outputs: ['main'],
              credentials: [
                  {
                      name: 'ouraApi',
                      required: true,
                  },
              ],
              properties: [
                  {
                      displayName: 'Resource',
                      name: 'resource',
                      type: 'options',
                      noDataExpression: true,
                      options: [
                          {
                              name: 'Profile',
                              value: 'profile',
                          },
                          {
                              name: 'Summary',
                              value: 'summary',
                          },
                      ],
                      default: 'summary',
                  },
                  ...ProfileDescription_1.profileOperations,
                  ...SummaryDescription_1.summaryOperations,
                  ...SummaryDescription_1.summaryFields,
              ],
          };
      }
      async execute() {
          const items = this.getInputData();
          const length = items.length;
          let responseData;
          const returnData = [];
          const resource = this.getNodeParameter('resource', 0);
          const operation = this.getNodeParameter('operation', 0);
          for (let i = 0; i < length; i++) {
              if (resource === 'profile') {
                  if (operation === 'get') {
                      responseData = await GenericFunctions_1.ouraApiRequest.call(this, 'GET', '/userinfo');
                  }
              }
              else if (resource === 'summary') {
                  const qs = {};
                  const { start, end } = this.getNodeParameter('filters', i);
                  const returnAll = this.getNodeParameter('returnAll', 0);
                  if (start) {
                      qs.start = (0, moment_1.default)(start).format('YYYY-MM-DD');
                  }
                  if (end) {
                      qs.end = (0, moment_1.default)(end).format('YYYY-MM-DD');
                  }
                  if (operation === 'getActivity') {
                      responseData = await GenericFunctions_1.ouraApiRequest.call(this, 'GET', '/activity', {}, qs);
                      responseData = responseData.activity;
                      if (!returnAll) {
                          const limit = this.getNodeParameter('limit', 0);
                          responseData = responseData.splice(0, limit);
                      }
                  }
                  else if (operation === 'getReadiness') {
                      responseData = await GenericFunctions_1.ouraApiRequest.call(this, 'GET', '/readiness', {}, qs);
                      responseData = responseData.readiness;
                      if (!returnAll) {
                          const limit = this.getNodeParameter('limit', 0);
                          responseData = responseData.splice(0, limit);
                      }
                  }
                  else if (operation === 'getSleep') {
                      responseData = await GenericFunctions_1.ouraApiRequest.call(this, 'GET', '/sleep', {}, qs);
                      responseData = responseData.sleep;
                      if (!returnAll) {
                          const limit = this.getNodeParameter('limit', 0);
                          responseData = responseData.splice(0, limit);
                      }
                  }
              }
              Array.isArray(responseData)
                  ? returnData.push(...responseData)
                  : returnData.push(responseData);
          }
          return [this.helpers.returnJsonArray(returnData)];
      }
  }
  exports.Oura = Oura;
  //# sourceMappingURL=Oura.node.js.map

documentation_markdown:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Oura node documentation
  description: Learn how to use the Oura node in n8n. Follow technical documentation to integrate Oura node into your workflows.
  contentType: [integration, reference]
  ---

  # Oura node

  Use the Oura node to automate work in Oura, and integrate Oura with other applications. n8n has built-in support for a wide range of Oura features, including getting profiles, and summaries. 

  On this page, you'll find a list of operations the Oura node supports and links to more resources.

  /// note | Credentials
  Refer to [Oura credentials](/integrations/builtin/credentials/oura.md) for guidance on setting up authentication. 
  ///

  ## Operations

  * Profile
      * Get the user's personal information.
  * Summary
      * Get the user's activity summary.
      * Get the user's readiness summary.
      * Get the user's sleep summary

  ## Templates and examples

  <!-- see https://www.notion.so/n8n/Pull-in-templates-for-the-integrations-pages-37c716837b804d30a33b47475f6e3780 -->
  [[ templatesWidget(page.title, 'oura') ]]

example_workflow:
  {"nodes":[{"parameters":{},"type":"n8n-nodes-base.node","typeVersion":1,"position":[220,120],"id":"638e3c19-9226-4467-84ce-aa38ceb583f8","name":"Node"}],"connections":{"Node":{"main":[[]]}},"pinData":{},"meta":{"templateCredsSetupCompleted":true,"instanceId":"c7d42edbaad452780fe7280fbe07480b6aea73210281b4c45b7fe44b858707d4"}}


node_type: n8n-nodes-base.Paddle
name: Paddle
display_name: Paddle
description: Consume Paddle API
category: output
icon: file:paddle.png
code_hash: 1deeb98d7a1bb1beaadc71f7e095853f024a41d1c330db6150a79906ac486135
documentation_url: https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.paddle
example_parameters: {}
properties_schema: []
package_name: n8n-nodes-base
version: 1.0
extracted_at: 2025-06-08 09:18:21
updated_at: 2025-06-08 09:18:21
source_code:
  "use strict";
  var __importDefault = (this && this.__importDefault) || function (mod) {
      return (mod && mod.__esModule) ? mod : { "default": mod };
  };
  Object.defineProperty(exports, "__esModule", { value: true });
  exports.Paddle = void 0;
  const n8n_workflow_1 = require("n8n-workflow");
  const CouponDescription_1 = require("./CouponDescription");
  const GenericFunctions_1 = require("./GenericFunctions");
  const PaymentDescription_1 = require("./PaymentDescription");
  const PlanDescription_1 = require("./PlanDescription");
  const ProductDescription_1 = require("./ProductDescription");
  const UserDescription_1 = require("./UserDescription");
  const moment_1 = __importDefault(require("moment"));
  class Paddle {
      constructor() {
          this.description = {
              displayName: 'Paddle',
              name: 'paddle',
              icon: 'file:paddle.png',
              group: ['output'],
              version: 1,
              subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
              description: 'Consume Paddle API',
              defaults: {
                  name: 'Paddle',
              },
              inputs: ['main'],
              outputs: ['main'],
              credentials: [
                  {
                      name: 'paddleApi',
                      required: true,
                  },
              ],
              properties: [
                  {
                      displayName: 'Resource',
                      name: 'resource',
                      type: 'options',
                      noDataExpression: true,
                      options: [
                          {
                              name: 'Coupon',
                              value: 'coupon',
                          },
                          {
                              name: 'Payment',
                              value: 'payment',
                          },
                          {
                              name: 'Plan',
                              value: 'plan',
                          },
                          {
                              name: 'Product',
                              value: 'product',
                          },
                          {
                              name: 'User',
                              value: 'user',
                          },
                      ],
                      default: 'coupon',
                  },
                  ...CouponDescription_1.couponOperations,
                  ...CouponDescription_1.couponFields,
                  ...PaymentDescription_1.paymentOperations,
                  ...PaymentDescription_1.paymentFields,
                  ...PlanDescription_1.planOperations,
                  ...PlanDescription_1.planFields,
                  ...ProductDescription_1.productOperations,
                  ...ProductDescription_1.productFields,
                  ...UserDescription_1.userOperations,
                  ...UserDescription_1.userFields,
              ],
          };
          this.methods = {
              loadOptions: {
                  async getPayments() {
                      const returnData = [];
                      const endpoint = '/2.0/subscription/payments';
                      const paymentResponse = await GenericFunctions_1.paddleApiRequest.call(this, endpoint, 'POST', {});
                      if (paymentResponse.response === undefined || paymentResponse.response.length === 0) {
                          throw new n8n_workflow_1.NodeApiError(this.getNode(), paymentResponse, {
                              message: 'No payments on account.',
                          });
                      }
                      for (const payment of paymentResponse.response) {
                          const id = payment.id;
                          returnData.push({
                              name: id,
                              value: id,
                          });
                      }
                      return returnData;
                  },
                  async getProducts() {
                      const returnData = [];
                      const endpoint = '/2.0/product/get_products';
                      const products = await GenericFunctions_1.paddleApiRequest.call(this, endpoint, 'POST', {});
                      if (products.length === 0) {
                          throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'No products on account.');
                      }
                      for (const product of products) {
                          const name = product.name;
                          const id = product.id;
                          returnData.push({
                              name,
                              value: id,
                          });
                      }
                      return returnData;
                  },
              },
          };
      }
      async execute() {
          const items = this.getInputData();
          const returnData = [];
          const length = items.length;
          let responseData;
          const body = {};
          const resource = this.getNodeParameter('resource', 0);
          const operation = this.getNodeParameter('operation', 0);
          for (let i = 0; i < length; i++) {
              try {
                  if (resource === 'coupon') {
                      if (operation === 'create') {
                          const jsonParameters = this.getNodeParameter('jsonParameters', i);
                          if (jsonParameters) {
                              const additionalFieldsJson = this.getNodeParameter('additionalFieldsJson', i);
                              if (additionalFieldsJson !== '') {
                                  if ((0, GenericFunctions_1.validateJSON)(additionalFieldsJson) !== undefined) {
                                      Object.assign(body, JSON.parse(additionalFieldsJson));
                                  }
                                  else {
                                      throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Additional fields must be a valid JSON', { itemIndex: i });
                                  }
                              }
                          }
                          else {
                              const discountType = this.getNodeParameter('discountType', i);
                              const couponType = this.getNodeParameter('couponType', i);
                              const discountAmount = this.getNodeParameter('discountAmount', i);
                              if (couponType === 'product') {
                                  body.product_ids = this.getNodeParameter('productIds', i);
                              }
                              if (discountType === 'flat') {
                                  body.currency = this.getNodeParameter('currency', i);
                              }
                              body.coupon_type = couponType;
                              body.discount_type = discountType;
                              body.discount_amount = discountAmount;
                              const additionalFields = this.getNodeParameter('additionalFields', i);
                              if (additionalFields.allowedUses) {
                                  body.allowed_uses = additionalFields.allowedUses;
                              }
                              if (additionalFields.couponCode) {
                                  body.coupon_code = additionalFields.couponCode;
                              }
                              if (additionalFields.couponPrefix) {
                                  body.coupon_prefix = additionalFields.couponPrefix;
                              }
                              if (additionalFields.expires) {
                                  body.expires = (0, moment_1.default)(additionalFields.expires).format('YYYY-MM-DD');
                              }
                              if (additionalFields.group) {
                                  body.group = additionalFields.group;
                              }
                              if (additionalFields.recurring) {
                                  body.recurring = 1;
                              }
                              else {
                                  body.recurring = 0;
                              }
                              if (additionalFields.numberOfCoupons) {
                                  body.num_coupons = additionalFields.numberOfCoupons;
                              }
                              if (additionalFields.description) {
                                  body.description = additionalFields.description;
                              }
                              const endpoint = '/2.1/product/create_coupon';
                              responseData = await GenericFunctions_1.paddleApiRequest.call(this, endpoint, 'POST', body);
                              responseData = responseData.response.coupon_codes.map((coupon) => ({
                                  coupon,
                              }));
                          }
                      }
                      if (operation === 'getAll') {
                          const productId = this.getNodeParameter('productId', i);
                          const returnAll = this.getNodeParameter('returnAll', i);
                          const endpoint = '/2.0/product/list_coupons';
                          body.product_id = productId;
                          responseData = await GenericFunctions_1.paddleApiRequest.call(this, endpoint, 'POST', body);
                          if (returnAll) {
                              responseData = responseData.response;
                          }
                          else {
                              const limit = this.getNodeParameter('limit', i);
                              responseData = responseData.response.splice(0, limit);
                          }
                      }
                      if (operation === 'update') {
                          const jsonParameters = this.getNodeParameter('jsonParameters', i);
                          if (jsonParameters) {
                              const additionalFieldsJson = this.getNodeParameter('additionalFieldsJson', i);
                              if (additionalFieldsJson !== '') {
                                  if ((0, GenericFunctions_1.validateJSON)(additionalFieldsJson) !== undefined) {
                                      Object.assign(body, JSON.parse(additionalFieldsJson));
                                  }
                                  else {
                                      throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Additional fields must be a valid JSON', { itemIndex: i });
                                  }
                              }
                          }
                          else {
                              const updateBy = this.getNodeParameter('updateBy', i);
                              if (updateBy === 'group') {
                                  body.group = this.getNodeParameter('group', i);
                              }
                              else {
                                  body.coupon_code = this.getNodeParameter('couponCode', i);
                              }
                              const additionalFields = this.getNodeParameter('additionalFields', i);
                              if (additionalFields.allowedUses) {
                                  body.allowed_uses = additionalFields.allowedUses;
                              }
                              if (additionalFields.currency) {
                                  body.currency = additionalFields.currency;
                              }
                              if (additionalFields.newCouponCode) {
                                  body.new_coupon_code = additionalFields.newCouponCode;
                              }
                              if (additionalFields.expires) {
                                  body.expires = (0, moment_1.default)(additionalFields.expires).format('YYYY-MM-DD');
                              }
                              if (additionalFields.newGroup) {
                                  body.new_group = additionalFields.newGroup;
                              }
                              if (additionalFields.recurring === true) {
                                  body.recurring = 1;
                              }
                              else if (additionalFields.recurring === false) {
                                  body.recurring = 0;
                              }
                              if (additionalFields.productIds) {
                                  body.product_ids = additionalFields.productIds;
                              }
                              if (additionalFields.discountAmount) {
                                  body.discount_amount = additionalFields.discountAmount;
                              }
                              if (additionalFields.discount) {
                                  if (additionalFields.discount.discountProperties.discountType === 'percentage') {
                                      body.discount_amount = additionalFields.discount.discountProperties
                                          .discountAmount;
                                  }
                                  else {
                                      body.currency = additionalFields.discount.discountProperties.currency;
                                      body.discount_amount = additionalFields.discount.discountProperties
                                          .discountAmount;
                                  }
                              }
                          }
                          const endpoint = '/2.1/product/update_coupon';
                          responseData = await GenericFunctions_1.paddleApiRequest.call(this, endpoint, 'POST', body);
                          responseData = responseData.response;
                      }
                  }
                  if (resource === 'payment') {
                      if (operation === 'getAll') {
                          const returnAll = this.getNodeParameter('returnAll', i);
                          const jsonParameters = this.getNodeParameter('jsonParameters', i);
                          if (jsonParameters) {
                              const additionalFieldsJson = this.getNodeParameter('additionalFieldsJson', i);
                              if (additionalFieldsJson !== '') {
                                  if ((0, GenericFunctions_1.validateJSON)(additionalFieldsJson) !== undefined) {
                                      Object.assign(body, JSON.parse(additionalFieldsJson));
                                  }
                                  else {
                                      throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Additional fields must be a valid JSON', { itemIndex: i });
                                  }
                              }
                          }
                          else {
                              const additionalFields = this.getNodeParameter('additionalFields', i);
                              if (additionalFields.subscriptionId) {
                                  body.subscription_id = additionalFields.subscriptionId;
                              }
                              if (additionalFields.plan) {
                                  body.plan = additionalFields.plan;
                              }
                              if (additionalFields.state) {
                                  body.state = additionalFields.state;
                              }
                              if (additionalFields.isPaid) {
                                  body.is_paid = 1;
                              }
                              else {
                                  body.is_paid = 0;
                              }
                              if (additionalFields.from) {
                                  body.from = (0, moment_1.default)(additionalFields.from).format('YYYY-MM-DD');
                              }
                              if (additionalFields.to) {
                                  body.to = (0, moment_1.default)(additionalFields.to).format('YYYY-MM-DD');
                              }
                              if (additionalFields.isOneOffCharge) {
                                  body.is_one_off_charge = additionalFields.isOneOffCharge;
                              }
                          }
                          const endpoint = '/2.0/subscription/payments';
                          responseData = await GenericFunctions_1.paddleApiRequest.call(this, endpoint, 'POST', body);
                          if (returnAll) {
                              responseData = responseData.response;
                          }
                          else {
                              const limit = this.getNodeParameter('limit', i);
                              responseData = responseData.response.splice(0, limit);
                          }
                      }
                      if (operation === 'reschedule') {
                          const paymentId = this.getNodeParameter('paymentId', i);
                          const date = this.getNodeParameter('date', i);
                          body.payment_id = paymentId;
                          body.date = body.to = (0, moment_1.default)(date).format('YYYY-MM-DD');
                          const endpoint = '/2.0/subscription/payments_reschedule';
                          responseData = await GenericFunctions_1.paddleApiRequest.call(this, endpoint, 'POST', body);
                      }
                  }
                  if (resource === 'plan') {
                      if (operation === 'getAll') {
                          const returnAll = this.getNodeParameter('returnAll', i);
                          const endpoint = '/2.0/subscription/plans';
                          responseData = await GenericFunctions_1.paddleApiRequest.call(this, endpoint, 'POST', body);
                          if (returnAll) {
                              responseData = responseData.response;
                          }
                          else {
                              const limit = this.getNodeParameter('limit', i);
                              responseData = responseData.response.splice(0, limit);
                          }
                      }
                      if (operation === 'get') {
                          const planId = this.getNodeParameter('planId', i);
                          body.plan = planId;
                          const endpoint = '/2.0/subscription/plans';
                          responseData = await GenericFunctions_1.paddleApiRequest.call(this, endpoint, 'POST', body);
                          responseData = responseData.response;
                      }
                  }
                  if (resource === 'product') {
                      if (operation === 'getAll') {
                          const returnAll = this.getNodeParameter('returnAll', i);
                          const endpoint = '/2.0/product/get_products';
                          responseData = await GenericFunctions_1.paddleApiRequest.call(this, endpoint, 'POST', body);
                          if (returnAll) {
                              responseData = responseData.response.products;
                          }
                          else {
                              const limit = this.getNodeParameter('limit', i);
                              responseData = responseData.response.products.splice(0, limit);
                          }
                      }
                  }
                  if (resource === 'order') {
                      if (operation === 'get') {
                          const endpoint = '/1.0/order';
                          const checkoutId = this.getNodeParameter('checkoutId', i);
                          body.checkout_id = checkoutId;
                          responseData = await GenericFunctions_1.paddleApiRequest.call(this, endpoint, 'GET', body);
                      }
                  }
                  if (resource === 'user') {
                      if (operation === 'getAll') {
                          const returnAll = this.getNodeParameter('returnAll', i);
                          const jsonParameters = this.getNodeParameter('jsonParameters', i);
                          if (jsonParameters) {
                              const additionalFieldsJson = this.getNodeParameter('additionalFieldsJson', i);
                              if (additionalFieldsJson !== '') {
                                  if ((0, GenericFunctions_1.validateJSON)(additionalFieldsJson) !== undefined) {
                                      Object.assign(body, JSON.parse(additionalFieldsJson));
                                  }
                                  else {
                                      throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Additional fields must be a valid JSON', { itemIndex: i });
                                  }
                              }
                          }
                          else {
                              const additionalFields = this.getNodeParameter('additionalFields', i);
                              if (additionalFields.state) {
                                  body.state = additionalFields.state;
                              }
                              if (additionalFields.planId) {
                                  body.plan_id = additionalFields.planId;
                              }
                              if (additionalFields.subscriptionId) {
                                  body.subscription_id = additionalFields.subscriptionId;
                              }
                          }
                          const endpoint = '/2.0/subscription/users';
                          if (returnAll) {
                              responseData = await GenericFunctions_1.paddleApiRequestAllItems.call(this, 'response', endpoint, 'POST', body);
                          }
                          else {
                              body.results_per_page = this.getNodeParameter('limit', i);
                              responseData = await GenericFunctions_1.paddleApiRequest.call(this, endpoint, 'POST', body);
                              responseData = responseData.response;
                          }
                      }
                  }
              }
              catch (error) {
                  if (this.continueOnFail()) {
                      const executionErrorData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } });
                      returnData.push(...executionErrorData);
                      continue;
                  }
                  throw error;
              }
              const executionData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray(responseData), { itemData: { item: i } });
              returnData.push(...executionData);
          }
          return [returnData];
      }
  }
  exports.Paddle = Paddle;
  //# sourceMappingURL=Paddle.node.js.map

documentation_markdown:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Paddle node documentation
  description: Learn how to use the Paddle node in n8n. Follow technical documentation to integrate Paddle node into your workflows.
  contentType: [integration, reference]
  ---

  # Paddle node

  Use the Paddle node to automate work in Paddle, and integrate Paddle with other applications. n8n has built-in support for a wide range of Paddle features, including creating, updating, and getting coupons, as well as getting plans, products, and users. 

  On this page, you'll find a list of operations the Paddle node supports and links to more resources.

  /// note | Credentials
  Refer to [Paddle credentials](/integrations/builtin/credentials/paddle.md) for guidance on setting up authentication. 
  ///

  ## Operations

  * Coupon
      * Create a coupon.
      * Get all coupons.
      * Update a coupon.
  * Payment
      * Get all payment.
      * Reschedule payment.
  * Plan
      * Get a plan.
      * Get all plans.
  * Product
      * Get all products.
  * User
      * Get all users

  ## Templates and examples

  <!-- see https://www.notion.so/n8n/Pull-in-templates-for-the-integrations-pages-37c716837b804d30a33b47475f6e3780 -->
  [[ templatesWidget(page.title, 'paddle') ]]

example_workflow:
  {"nodes":[{"parameters":{},"type":"n8n-nodes-base.node","typeVersion":1,"position":[220,120],"id":"db0b506a-ae2d-4cf0-ab76-ab17c572dccd","name":"Node"}],"connections":{"Node":{"main":[[]]}},"pinData":{},"meta":{"templateCredsSetupCompleted":true,"instanceId":"8aeedba875f8fe6ec65c12ca32ef25b9d02d4748094529accc5fe4f6e83888a6"}}


node_type: n8n-nodes-base.PayPal
name: PayPal
display_name: PayPal
description: Consume PayPal API
category: output
icon: file:paypal.svg
code_hash: 1375d7a13c2cfc4ee9d6c6abd2b20daf2503641d47214ed515cfa09d25b12ceb
documentation_url: https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.paypaltrigger
example_parameters: {}
properties_schema: []
package_name: n8n-nodes-base
version: 1.0
extracted_at: 2025-06-08 09:18:21
updated_at: 2025-06-08 09:18:21
source_code:
  "use strict";
  Object.defineProperty(exports, "__esModule", { value: true });
  exports.PayPal = void 0;
  const n8n_workflow_1 = require("n8n-workflow");
  const PaymentDescription_1 = require("./PaymentDescription");
  const GenericFunctions_1 = require("./GenericFunctions");
  class PayPal {
      constructor() {
          this.description = {
              displayName: 'PayPal',
              name: 'payPal',
              icon: 'file:paypal.svg',
              group: ['output'],
              version: 1,
              subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
              description: 'Consume PayPal API',
              defaults: {
                  name: 'PayPal',
              },
              inputs: ['main'],
              outputs: ['main'],
              credentials: [
                  {
                      name: 'payPalApi',
                      required: true,
                      testedBy: 'payPalApiTest',
                  },
              ],
              properties: [
                  {
                      displayName: 'Resource',
                      name: 'resource',
                      type: 'options',
                      noDataExpression: true,
                      options: [
                          {
                              name: 'Payout',
                              value: 'payout',
                          },
                          {
                              name: 'Payout Item',
                              value: 'payoutItem',
                          },
                      ],
                      default: 'payout',
                  },
                  ...PaymentDescription_1.payoutOperations,
                  ...PaymentDescription_1.payoutItemOperations,
                  ...PaymentDescription_1.payoutFields,
                  ...PaymentDescription_1.payoutItemFields,
              ],
          };
          this.methods = {
              credentialTest: {
                  async payPalApiTest(credential) {
                      const credentials = credential.data;
                      const clientId = credentials.clientId;
                      const clientSecret = credentials.secret;
                      const environment = credentials.env;
                      if (!clientId || !clientSecret || !environment) {
                          return {
                              status: 'Error',
                              message: 'Connection details not valid: missing credentials',
                          };
                      }
                      let baseUrl = '';
                      if (environment !== 'live') {
                          baseUrl = 'https://api-m.sandbox.paypal.com';
                      }
                      else {
                          baseUrl = 'https://api-m.paypal.com';
                      }
                      const base64Key = Buffer.from(`${clientId}:${clientSecret}`).toString('base64');
                      const options = {
                          headers: {
                              Authorization: `Basic ${base64Key}`,
                          },
                          method: 'POST',
                          uri: `${baseUrl}/v1/oauth2/token`,
                          form: {
                              grant_type: 'client_credentials',
                          },
                      };
                      try {
                          await this.helpers.request(options);
                          return {
                              status: 'OK',
                              message: 'Authentication successful!',
                          };
                      }
                      catch (error) {
                          return {
                              status: 'Error',
                              message: `Connection details not valid: ${error.message}`,
                          };
                      }
                  },
              },
          };
      }
      async execute() {
          const items = this.getInputData();
          const returnData = [];
          const length = items.length;
          let responseData;
          const qs = {};
          const resource = this.getNodeParameter('resource', 0);
          const operation = this.getNodeParameter('operation', 0);
          for (let i = 0; i < length; i++) {
              try {
                  if (resource === 'payout') {
                      if (operation === 'create') {
                          const body = {};
                          const header = {};
                          const jsonActive = this.getNodeParameter('jsonParameters', i);
                          const senderBatchId = this.getNodeParameter('senderBatchId', i);
                          const additionalFields = this.getNodeParameter('additionalFields', i);
                          header.sender_batch_id = senderBatchId;
                          if (additionalFields.emailSubject) {
                              header.email_subject = additionalFields.emailSubject;
                          }
                          if (additionalFields.emailMessage) {
                              header.email_message = additionalFields.emailMessage;
                          }
                          if (additionalFields.note) {
                              header.note = additionalFields.note;
                          }
                          body.sender_batch_header = header;
                          if (!jsonActive) {
                              const payoutItems = [];
                              const itemsValues = this.getNodeParameter('itemsUi', i)
                                  .itemsValues;
                              if (itemsValues && itemsValues.length > 0) {
                                  itemsValues.forEach((o) => {
                                      const payoutItem = {};
                                      const amount = {};
                                      amount.currency = o.currency;
                                      amount.value = parseFloat(o.amount);
                                      payoutItem.amount = amount;
                                      payoutItem.note = o.note || '';
                                      payoutItem.receiver = o.receiverValue;
                                      payoutItem.recipient_type = o.recipientType;
                                      payoutItem.recipient_wallet = o.recipientWallet;
                                      payoutItem.sender_item_id = o.senderItemId || '';
                                      payoutItems.push(payoutItem);
                                  });
                                  body.items = payoutItems;
                              }
                              else {
                                  throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'You must have at least one item.', {
                                      itemIndex: i,
                                  });
                              }
                          }
                          else {
                              const itemsJson = (0, GenericFunctions_1.validateJSON)(this.getNodeParameter('itemsJson', i));
                              body.items = itemsJson;
                          }
                          responseData = await GenericFunctions_1.payPalApiRequest.call(this, '/payments/payouts', 'POST', body);
                      }
                      if (operation === 'get') {
                          const payoutBatchId = this.getNodeParameter('payoutBatchId', i);
                          const returnAll = this.getNodeParameter('returnAll', 0);
                          if (returnAll) {
                              responseData = await GenericFunctions_1.payPalApiRequestAllItems.call(this, 'items', `/payments/payouts/${payoutBatchId}`, 'GET', {}, qs);
                          }
                          else {
                              qs.page_size = this.getNodeParameter('limit', i);
                              responseData = await GenericFunctions_1.payPalApiRequest.call(this, `/payments/payouts/${payoutBatchId}`, 'GET', {}, qs);
                              responseData = responseData.items;
                          }
                      }
                  }
                  else if (resource === 'payoutItem') {
                      if (operation === 'get') {
                          const payoutItemId = this.getNodeParameter('payoutItemId', i);
                          responseData = await GenericFunctions_1.payPalApiRequest.call(this, `/payments/payouts-item/${payoutItemId}`, 'GET', {}, qs);
                      }
                      if (operation === 'cancel') {
                          const payoutItemId = this.getNodeParameter('payoutItemId', i);
                          responseData = await GenericFunctions_1.payPalApiRequest.call(this, `/payments/payouts-item/${payoutItemId}/cancel`, 'POST', {}, qs);
                      }
                  }
                  const executionData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray(responseData), { itemData: { item: i } });
                  returnData.push(...executionData);
              }
              catch (error) {
                  if (this.continueOnFail()) {
                      const executionErrorData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } });
                      returnData.push(...executionErrorData);
                      continue;
                  }
                  throw error;
              }
          }
          return [returnData];
      }
  }
  exports.PayPal = PayPal;
  //# sourceMappingURL=PayPal.node.js.map

documentation_markdown:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: PayPal Trigger node documentation
  description: Learn how to use the PayPal Trigger node in n8n. Follow technical documentation to integrate PayPal Trigger node into your workflows.
  contentType: [integration, reference]
  ---

  # PayPal Trigger node

  [PayPal](https://paypal.com){:target=_blank .external-link} is a digital payment service that supports online fund transfers that customers can use when shopping online.

  /// note | Credentials
  You can find authentication information for this node [here](/integrations/builtin/credentials/paypal.md).
  ///

  ///  note  | Examples and templates
  For usage examples and templates to help you get started, refer to n8n's [PayPal Trigger integrations](https://n8n.io/integrations/paypal-trigger/){:target=_blank .external-link} page.
  ///

example_workflow:
  {"nodes":[{"parameters":{},"type":"n8n-nodes-base.node","typeVersion":1,"position":[220,120],"id":"d78a99ab-b3cb-4a5a-9505-99668aa3c554","name":"Node"}],"connections":{"Node":{"main":[[]]}},"pinData":{},"meta":{"templateCredsSetupCompleted":true,"instanceId":"1d14063acea3f6bc15b1ffa806fbe459ffa2cfde8297b393a5743050c614a602"}}


node_type: n8n-nodes-base.Phantombuster
name: Phantombuster
display_name: Phantombuster
description: Consume Phantombuster API
category: input
icon: file:phantombuster.png
code_hash: 75f694de00a8499a39f024ef57ca0c79526b4ea2590dd834c4fdc04f94c2266e
documentation_url: https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.phantombuster
example_parameters: {}
properties_schema: []
package_name: n8n-nodes-base
version: 1.0
extracted_at: 2025-06-08 09:18:21
updated_at: 2025-06-08 09:18:21
source_code:
  "use strict";
  Object.defineProperty(exports, "__esModule", { value: true });
  exports.Phantombuster = void 0;
  const GenericFunctions_1 = require("./GenericFunctions");
  const AgentDescription_1 = require("./AgentDescription");
  class Phantombuster {
      constructor() {
          this.description = {
              displayName: 'Phantombuster',
              name: 'phantombuster',
              icon: 'file:phantombuster.png',
              group: ['input'],
              version: 1,
              subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
              description: 'Consume Phantombuster API',
              defaults: {
                  name: 'Phantombuster',
              },
              inputs: ['main'],
              outputs: ['main'],
              credentials: [
                  {
                      name: 'phantombusterApi',
                      required: true,
                  },
              ],
              properties: [
                  {
                      displayName: 'Resource',
                      name: 'resource',
                      type: 'options',
                      noDataExpression: true,
                      options: [
                          {
                              name: 'Agent',
                              value: 'agent',
                          },
                      ],
                      default: 'agent',
                  },
                  ...AgentDescription_1.agentOperations,
                  ...AgentDescription_1.agentFields,
              ],
          };
          this.methods = {
              loadOptions: {
                  async getAgents() {
                      const returnData = [];
                      const responseData = await GenericFunctions_1.phantombusterApiRequest.call(this, 'GET', '/agents/fetch-all');
                      for (const item of responseData) {
                          returnData.push({
                              name: item.name,
                              value: item.id,
                          });
                      }
                      return returnData;
                  },
              },
          };
      }
      async execute() {
          var _a, _b;
          const items = this.getInputData();
          const returnData = [];
          const length = items.length;
          const qs = {};
          let responseData;
          const resource = this.getNodeParameter('resource', 0);
          const operation = this.getNodeParameter('operation', 0);
          for (let i = 0; i < length; i++) {
              try {
                  if (resource === 'agent') {
                      if (operation === 'delete') {
                          const agentId = this.getNodeParameter('agentId', i);
                          responseData = await GenericFunctions_1.phantombusterApiRequest.call(this, 'POST', '/agents/delete', {
                              id: agentId,
                          });
                          responseData = { success: true };
                      }
                      if (operation === 'get') {
                          const agentId = this.getNodeParameter('agentId', i);
                          responseData = await GenericFunctions_1.phantombusterApiRequest.call(this, 'GET', '/agents/fetch', {}, { id: agentId });
                      }
                      if (operation === 'getOutput') {
                          const agentId = this.getNodeParameter('agentId', i);
                          const resolveData = this.getNodeParameter('resolveData', i);
                          const additionalFields = this.getNodeParameter('additionalFields', i);
                          Object.assign(qs, additionalFields);
                          qs.id = agentId;
                          responseData = await GenericFunctions_1.phantombusterApiRequest.call(this, 'GET', '/agents/fetch-output', {}, qs);
                          if (resolveData) {
                              const { resultObject } = await GenericFunctions_1.phantombusterApiRequest.call(this, 'GET', '/containers/fetch-result-object', {}, { id: responseData.containerId });
                              if (resultObject === null) {
                                  responseData = {};
                              }
                              else {
                                  responseData = JSON.parse(resultObject);
                              }
                          }
                      }
                      if (operation === 'getAll') {
                          const returnAll = this.getNodeParameter('returnAll', i);
                          responseData = await GenericFunctions_1.phantombusterApiRequest.call(this, 'GET', '/agents/fetch-all');
                          if (!returnAll) {
                              const limit = this.getNodeParameter('limit', 0);
                              responseData = responseData.splice(0, limit);
                          }
                      }
                      if (operation === 'launch') {
                          const agentId = this.getNodeParameter('agentId', i);
                          const jsonParameters = this.getNodeParameter('jsonParameters', i);
                          const resolveData = this.getNodeParameter('resolveData', i);
                          const additionalFields = this.getNodeParameter('additionalFields', i);
                          const body = {
                              id: agentId,
                          };
                          if (jsonParameters) {
                              if (additionalFields.argumentsJson) {
                                  body.arguments = (0, GenericFunctions_1.validateJSON)(this, additionalFields.argumentsJson, 'Arguments');
                                  delete additionalFields.argumentsJson;
                              }
                              if (additionalFields.bonusArgumentJson) {
                                  body.bonusArgument = (0, GenericFunctions_1.validateJSON)(this, additionalFields.bonusArgumentJson, 'Bonus Argument');
                                  delete additionalFields.bonusArgumentJson;
                              }
                          }
                          else {
                              const argumentParameters = ((_a = additionalFields.argumentsUi) === null || _a === void 0 ? void 0 : _a.argumentValues) ||
                                  [];
                              body.arguments = argumentParameters.reduce((object, currentValue) => {
                                  object[currentValue.key] = currentValue.value;
                                  return object;
                              }, {});
                              delete additionalFields.argumentsUi;
                              const bonusParameters = ((_b = additionalFields.bonusArgumentUi) === null || _b === void 0 ? void 0 : _b.bonusArgumentValue) || [];
                              body.bonusArgument = bonusParameters.reduce((object, currentValue) => {
                                  object[currentValue.key] = currentValue.value;
                                  return object;
                              }, {});
                              delete additionalFields.bonusArgumentUi;
                          }
                          Object.assign(body, additionalFields);
                          responseData = await GenericFunctions_1.phantombusterApiRequest.call(this, 'POST', '/agents/launch', body);
                          if (resolveData) {
                              responseData = await GenericFunctions_1.phantombusterApiRequest.call(this, 'GET', '/containers/fetch', {}, { id: responseData.containerId });
                          }
                      }
                  }
                  const executionData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray(responseData), { itemData: { item: i } });
                  returnData.push(...executionData);
              }
              catch (error) {
                  if (this.continueOnFail()) {
                      const executionData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } });
                      returnData.push(...executionData);
                      continue;
                  }
                  throw error;
              }
          }
          return [returnData];
      }
  }
  exports.Phantombuster = Phantombuster;
  //# sourceMappingURL=Phantombuster.node.js.map

documentation_markdown:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: PhantomBuster node documentation
  description: Learn how to use the PhantomBuster node in n8n. Follow technical documentation to integrate PhantomBuster node into your workflows.
  contentType: [integration, reference]
  ---

  # PhantomBuster node

  Use the PhantomBuster node to automate work in PhantomBuster, and integrate PhantomBuster with other applications. n8n has built-in support for a wide range of PhantomBuster features, including adding, deleting, and getting agents. 

  On this page, you'll find a list of operations the PhantomBuster node supports and links to more resources.

  /// note | Credentials
  Refer to [PhantomBuster credentials](/integrations/builtin/credentials/phantombuster.md) for guidance on setting up authentication. 
  ///

  ## Operations

  * Agent
      * Delete an agent by ID.
      * Get an agent by ID.
      * Get all agents of the current user's organization.
      * Get the output of the most recent container of an agent.
      * Add an agent to the launch queue.

  ## Templates and examples

  <!-- see https://www.notion.so/n8n/Pull-in-templates-for-the-integrations-pages-37c716837b804d30a33b47475f6e3780 -->
  [[ templatesWidget(page.title, 'phantombuster') ]]

  --8<-- "_snippets/integrations/builtin/app-nodes/operation-not-supported.md"

example_workflow:
  {"nodes":[{"parameters":{},"type":"n8n-nodes-base.node","typeVersion":1,"position":[220,120],"id":"49b4cfd3-b7d1-4f50-ba3f-1a0549a88826","name":"Node"}],"connections":{"Node":{"main":[[]]}},"pinData":{},"meta":{"templateCredsSetupCompleted":true,"instanceId":"9b375fe984a74e369735fc01f542d49af42a78cbf851fbd1ac9cbf574c058109"}}


node_type: n8n-nodes-base.PagerDuty
name: PagerDuty
display_name: PagerDuty
description: Consume PagerDuty API
category: output
icon: file:pagerDuty.svg
code_hash: 3ee5770722cf0d95e6f298602b21b57dcfb1209250ecf06d50fe9a7465455ef9
documentation_url: https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.pagerduty
example_parameters: {}
properties_schema: []
package_name: n8n-nodes-base
version: 1.0
extracted_at: 2025-06-08 09:18:21
updated_at: 2025-06-08 09:18:21
source_code:
  "use strict";
  var __importDefault = (this && this.__importDefault) || function (mod) {
      return (mod && mod.__esModule) ? mod : { "default": mod };
  };
  Object.defineProperty(exports, "__esModule", { value: true });
  exports.PagerDuty = void 0;
  const GenericFunctions_1 = require("./GenericFunctions");
  const IncidentDescription_1 = require("./IncidentDescription");
  const IncidentNoteDescription_1 = require("./IncidentNoteDescription");
  const LogEntryDescription_1 = require("./LogEntryDescription");
  const UserDescription_1 = require("./UserDescription");
  const change_case_1 = require("change-case");
  const moment_timezone_1 = __importDefault(require("moment-timezone"));
  class PagerDuty {
      constructor() {
          this.description = {
              displayName: 'PagerDuty',
              name: 'pagerDuty',
              icon: 'file:pagerDuty.svg',
              group: ['output'],
              version: 1,
              subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
              description: 'Consume PagerDuty API',
              defaults: {
                  name: 'PagerDuty',
              },
              inputs: ['main'],
              outputs: ['main'],
              credentials: [
                  {
                      name: 'pagerDutyApi',
                      required: true,
                      displayOptions: {
                          show: {
                              authentication: ['apiToken'],
                          },
                      },
                  },
                  {
                      name: 'pagerDutyOAuth2Api',
                      required: true,
                      displayOptions: {
                          show: {
                              authentication: ['oAuth2'],
                          },
                      },
                  },
              ],
              properties: [
                  {
                      displayName: 'Authentication',
                      name: 'authentication',
                      type: 'options',
                      options: [
                          {
                              name: 'API Token',
                              value: 'apiToken',
                          },
                          {
                              name: 'OAuth2',
                              value: 'oAuth2',
                          },
                      ],
                      default: 'apiToken',
                  },
                  {
                      displayName: 'Resource',
                      name: 'resource',
                      type: 'options',
                      noDataExpression: true,
                      options: [
                          {
                              name: 'Incident',
                              value: 'incident',
                          },
                          {
                              name: 'Incident Note',
                              value: 'incidentNote',
                          },
                          {
                              name: 'Log Entry',
                              value: 'logEntry',
                          },
                          {
                              name: 'User',
                              value: 'user',
                          },
                      ],
                      default: 'incident',
                  },
                  ...IncidentDescription_1.incidentOperations,
                  ...IncidentDescription_1.incidentFields,
                  ...IncidentNoteDescription_1.incidentNoteOperations,
                  ...IncidentNoteDescription_1.incidentNoteFields,
                  ...LogEntryDescription_1.logEntryOperations,
                  ...LogEntryDescription_1.logEntryFields,
                  ...UserDescription_1.userOperations,
                  ...UserDescription_1.userFields,
              ],
          };
          this.methods = {
              loadOptions: {
                  async getEscalationPolicies() {
                      const returnData = [];
                      const escalationPolicies = await GenericFunctions_1.pagerDutyApiRequestAllItems.call(this, 'escalation_policies', 'GET', '/escalation_policies');
                      for (const escalationPolicy of escalationPolicies) {
                          const escalationPolicyName = escalationPolicy.name;
                          const escalationPolicyId = escalationPolicy.id;
                          returnData.push({
                              name: escalationPolicyName,
                              value: escalationPolicyId,
                          });
                      }
                      return returnData;
                  },
                  async getPriorities() {
                      const returnData = [];
                      const priorities = await GenericFunctions_1.pagerDutyApiRequestAllItems.call(this, 'priorities', 'GET', '/priorities');
                      for (const priority of priorities) {
                          const priorityName = priority.name;
                          const priorityId = priority.id;
                          const priorityDescription = priority.description;
                          returnData.push({
                              name: priorityName,
                              value: priorityId,
                              description: priorityDescription,
                          });
                      }
                      return returnData;
                  },
                  async getServices() {
                      const returnData = [];
                      const services = await GenericFunctions_1.pagerDutyApiRequestAllItems.call(this, 'services', 'GET', '/services');
                      for (const service of services) {
                          const serviceName = service.name;
                          const serviceId = service.id;
                          returnData.push({
                              name: serviceName,
                              value: serviceId,
                          });
                      }
                      return returnData;
                  },
                  async getTimezones() {
                      const returnData = [];
                      for (const timezone of moment_timezone_1.default.tz.names()) {
                          const timezoneName = timezone;
                          const timezoneId = timezone;
                          returnData.push({
                              name: timezoneName,
                              value: timezoneId,
                          });
                      }
                      return returnData;
                  },
              },
          };
      }
      async execute() {
          const items = this.getInputData();
          const returnData = [];
          const length = items.length;
          let responseData;
          const qs = {};
          const resource = this.getNodeParameter('resource', 0);
          const operation = this.getNodeParameter('operation', 0);
          for (let i = 0; i < length; i++) {
              try {
                  if (resource === 'incident') {
                      if (operation === 'create') {
                          const title = this.getNodeParameter('title', i);
                          const serviceId = this.getNodeParameter('serviceId', i);
                          const email = this.getNodeParameter('email', i);
                          const additionalFields = this.getNodeParameter('additionalFields', i);
                          const conferenceBridge = this.getNodeParameter('conferenceBridgeUi', i)
                              .conferenceBridgeValues;
                          const body = {
                              type: 'incident',
                              title,
                              service: {
                                  id: serviceId,
                                  type: 'service_reference',
                              },
                          };
                          if (additionalFields.details) {
                              body.body = {
                                  type: 'incident_body',
                                  details: additionalFields.details,
                              };
                          }
                          if (additionalFields.priorityId) {
                              body.priority = {
                                  id: additionalFields.priorityId,
                                  type: 'priority_reference',
                              };
                          }
                          if (additionalFields.escalationPolicyId) {
                              body.escalation_policy = {
                                  id: additionalFields.escalationPolicyId,
                                  type: 'escalation_policy_reference',
                              };
                          }
                          if (additionalFields.urgency) {
                              body.urgency = additionalFields.urgency;
                          }
                          if (additionalFields.incidentKey) {
                              body.incident_key = additionalFields.incidentKey;
                          }
                          if (conferenceBridge) {
                              body.conference_bridge = {
                                  conference_number: conferenceBridge.conferenceNumber,
                                  conference_url: conferenceBridge.conferenceUrl,
                              };
                          }
                          responseData = await GenericFunctions_1.pagerDutyApiRequest.call(this, 'POST', '/incidents', { incident: body }, {}, undefined, { from: email });
                          responseData = responseData.incident;
                      }
                      if (operation === 'get') {
                          const incidentId = this.getNodeParameter('incidentId', i);
                          responseData = await GenericFunctions_1.pagerDutyApiRequest.call(this, 'GET', `/incidents/${incidentId}`);
                          responseData = responseData.incident;
                      }
                      if (operation === 'getAll') {
                          const returnAll = this.getNodeParameter('returnAll', 0);
                          const options = this.getNodeParameter('options', 0);
                          if (options.userIds) {
                              options.userIds = options.userIds.split(',');
                          }
                          if (options.teamIds) {
                              options.teamIds = options.teamIds.split(',');
                          }
                          if (options.include) {
                              options.include = options.include.map((e) => (0, change_case_1.snakeCase)(e));
                          }
                          if (options.sortBy) {
                              options.sortBy = options.sortBy;
                          }
                          Object.assign(qs, (0, GenericFunctions_1.keysToSnakeCase)(options)[0]);
                          if (returnAll) {
                              responseData = await GenericFunctions_1.pagerDutyApiRequestAllItems.call(this, 'incidents', 'GET', '/incidents', {}, qs);
                          }
                          else {
                              qs.limit = this.getNodeParameter('limit', 0);
                              responseData = await GenericFunctions_1.pagerDutyApiRequest.call(this, 'GET', '/incidents', {}, qs);
                              responseData = responseData.incidents;
                          }
                      }
                      if (operation === 'update') {
                          const incidentId = this.getNodeParameter('incidentId', i);
                          const email = this.getNodeParameter('email', i);
                          const conferenceBridge = this.getNodeParameter('conferenceBridgeUi', i)
                              .conferenceBridgeValues;
                          const updateFields = this.getNodeParameter('updateFields', i);
                          const body = {
                              type: 'incident',
                          };
                          if (updateFields.title) {
                              body.title = updateFields.title;
                          }
                          if (updateFields.escalationLevel) {
                              body.escalation_level = updateFields.escalationLevel;
                          }
                          if (updateFields.details) {
                              body.body = {
                                  type: 'incident_body',
                                  details: updateFields.details,
                              };
                          }
                          if (updateFields.priorityId) {
                              body.priority = {
                                  id: updateFields.priorityId,
                                  type: 'priority_reference',
                              };
                          }
                          if (updateFields.escalationPolicyId) {
                              body.escalation_policy = {
                                  id: updateFields.escalationPolicyId,
                                  type: 'escalation_policy_reference',
                              };
                          }
                          if (updateFields.urgency) {
                              body.urgency = updateFields.urgency;
                          }
                          if (updateFields.resolution) {
                              body.resolution = updateFields.resolution;
                          }
                          if (updateFields.status) {
                              body.status = updateFields.status;
                          }
                          if (conferenceBridge) {
                              body.conference_bridge = {
                                  conference_number: conferenceBridge.conferenceNumber,
                                  conference_url: conferenceBridge.conferenceUrl,
                              };
                          }
                          responseData = await GenericFunctions_1.pagerDutyApiRequest.call(this, 'PUT', `/incidents/${incidentId}`, { incident: body }, {}, undefined, { from: email });
                          responseData = responseData.incident;
                      }
                  }
                  if (resource === 'incidentNote') {
                      if (operation === 'create') {
                          const incidentId = this.getNodeParameter('incidentId', i);
                          const content = this.getNodeParameter('content', i);
                          const email = this.getNodeParameter('email', i);
                          const body = {
                              content,
                          };
                          responseData = await GenericFunctions_1.pagerDutyApiRequest.call(this, 'POST', `/incidents/${incidentId}/notes`, { note: body }, {}, undefined, { from: email });
                      }
                      if (operation === 'getAll') {
                          const incidentId = this.getNodeParameter('incidentId', i);
                          const returnAll = this.getNodeParameter('returnAll', 0);
                          if (returnAll) {
                              responseData = await GenericFunctions_1.pagerDutyApiRequestAllItems.call(this, 'notes', 'GET', `/incidents/${incidentId}/notes`, {}, qs);
                          }
                          else {
                              qs.limit = this.getNodeParameter('limit', 0);
                              responseData = await GenericFunctions_1.pagerDutyApiRequest.call(this, 'GET', `/incidents/${incidentId}/notes`, {}, qs);
                              responseData = responseData.notes;
                          }
                      }
                  }
                  if (resource === 'logEntry') {
                      if (operation === 'get') {
                          const logEntryId = this.getNodeParameter('logEntryId', i);
                          responseData = await GenericFunctions_1.pagerDutyApiRequest.call(this, 'GET', `/log_entries/${logEntryId}`);
                          responseData = responseData.log_entry;
                      }
                      if (operation === 'getAll') {
                          const options = this.getNodeParameter('options', i);
                          Object.assign(qs, options);
                          (0, GenericFunctions_1.keysToSnakeCase)(qs);
                          const returnAll = this.getNodeParameter('returnAll', 0);
                          if (returnAll) {
                              responseData = await GenericFunctions_1.pagerDutyApiRequestAllItems.call(this, 'log_entries', 'GET', '/log_entries', {}, qs);
                          }
                          else {
                              qs.limit = this.getNodeParameter('limit', 0);
                              responseData = await GenericFunctions_1.pagerDutyApiRequest.call(this, 'GET', '/log_entries', {}, qs);
                              responseData = responseData.log_entries;
                          }
                      }
                  }
                  if (resource === 'user') {
                      if (operation === 'get') {
                          const userId = this.getNodeParameter('userId', i);
                          responseData = await GenericFunctions_1.pagerDutyApiRequest.call(this, 'GET', `/users/${userId}`);
                          responseData = responseData.user;
                      }
                  }
                  const executionData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray(responseData), { itemData: { item: i } });
                  returnData.push(...executionData);
              }
              catch (error) {
                  if (this.continueOnFail()) {
                      const executionErrorData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } });
                      returnData.push(...executionErrorData);
                      continue;
                  }
                  throw error;
              }
          }
          return [returnData];
      }
  }
  exports.PagerDuty = PagerDuty;
  //# sourceMappingURL=PagerDuty.node.js.map

documentation_markdown:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: PagerDuty node documentation
  description: Learn how to use the PagerDuty node in n8n. Follow technical documentation to integrate PagerDuty node into your workflows.
  contentType: [integration, reference]
  ---

  # PagerDuty node

  Use the PagerDuty node to automate work in PagerDuty, and integrate PagerDuty with other applications. n8n has built-in support for a wide range of PagerDuty features, including creating incident notes, as well as updating, and getting all log entries and users. 

  On this page, you'll find a list of operations the PagerDuty node supports and links to more resources.

  /// note | Credentials
  Refer to [PagerDuty credentials](/integrations/builtin/credentials/pagerduty.md) for guidance on setting up authentication. 
  ///

  ## Operations

  * Incident
      * Create an incident
      * Get an incident
      * Get all incidents
      * Update an incident
  * Incident Note
      * Create an incident note
      * Get all incident's notes
  * Log Entry
      * Get a log entry
      * Get all log entries
  * User
      * Get a user

  ## Templates and examples

  <!-- see https://www.notion.so/n8n/Pull-in-templates-for-the-integrations-pages-37c716837b804d30a33b47475f6e3780 -->
  [[ templatesWidget(page.title, 'pagerduty') ]]

  --8<-- "_snippets/integrations/builtin/app-nodes/operation-not-supported.md"

example_workflow:
  {"nodes":[{"parameters":{},"type":"n8n-nodes-base.node","typeVersion":1,"position":[220,120],"id":"20901f61-8186-43ea-8b87-64601d27f7fa","name":"Node"}],"connections":{"Node":{"main":[[]]}},"pinData":{},"meta":{"templateCredsSetupCompleted":true,"instanceId":"a0df892074223f9ef149b7db09ee2d97a241bb1386a1f94a6587924856236ea0"}}


node_type: n8n-nodes-base.Pipedrive
name: Pipedrive
display_name: Pipedrive
description: Create and edit data in Pipedrive
category: transform
icon: file:pipedrive.svg
code_hash: c964e69be5af2dffe6fcff880f45c47f440717ee0bba524f67cf30b0cfb8cbe2
documentation_url: https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.pipedrivetrigger
example_parameters: {}
properties_schema: []
package_name: n8n-nodes-base
version: 1.0
extracted_at: 2025-06-08 09:18:21
updated_at: 2025-06-08 09:18:21
source_code:
  "use strict";
  Object.defineProperty(exports, "__esModule", { value: true });
  exports.Pipedrive = void 0;
  const n8n_workflow_1 = require("n8n-workflow");
  const GenericFunctions_1 = require("./GenericFunctions");
  const utils_1 = require("./utils");
  function addAdditionalFields(body, additionalFields) {
      for (const key of Object.keys(additionalFields)) {
          if (key === 'customProperties' &&
              additionalFields.customProperties.property !== undefined) {
              for (const customProperty of additionalFields.customProperties
                  .property) {
                  body[customProperty.name] = customProperty.value;
              }
          }
          else {
              body[key] = additionalFields[key];
          }
      }
  }
  class Pipedrive {
      constructor() {
          this.description = {
              displayName: 'Pipedrive',
              name: 'pipedrive',
              icon: 'file:pipedrive.svg',
              group: ['transform'],
              version: 1,
              subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
              description: 'Create and edit data in Pipedrive',
              defaults: {
                  name: 'Pipedrive',
              },
              inputs: ['main'],
              outputs: ['main'],
              credentials: [
                  {
                      name: 'pipedriveApi',
                      required: true,
                      displayOptions: {
                          show: {
                              authentication: ['apiToken'],
                          },
                      },
                      testedBy: {
                          request: {
                              method: 'GET',
                              url: '/users/me',
                          },
                      },
                  },
                  {
                      name: 'pipedriveOAuth2Api',
                      required: true,
                      displayOptions: {
                          show: {
                              authentication: ['oAuth2'],
                          },
                      },
                  },
              ],
              requestDefaults: {
                  baseURL: 'https://api.pipedrive.com/v1',
                  url: '',
              },
              properties: [
                  {
                      displayName: 'Authentication',
                      name: 'authentication',
                      type: 'options',
                      options: [
                          {
                              name: 'API Token',
                              value: 'apiToken',
                          },
                          {
                              name: 'OAuth2',
                              value: 'oAuth2',
                          },
                      ],
                      default: 'apiToken',
                  },
                  {
                      displayName: 'Resource',
                      name: 'resource',
                      type: 'options',
                      noDataExpression: true,
                      options: [
                          {
                              name: 'Activity',
                              value: 'activity',
                          },
                          {
                              name: 'Deal',
                              value: 'deal',
                          },
                          {
                              name: 'Deal Activity',
                              value: 'dealActivity',
                          },
                          {
                              name: 'Deal Product',
                              value: 'dealProduct',
                          },
                          {
                              name: 'File',
                              value: 'file',
                          },
                          {
                              name: 'Lead',
                              value: 'lead',
                          },
                          {
                              name: 'Note',
                              value: 'note',
                          },
                          {
                              name: 'Organization',
                              value: 'organization',
                          },
                          {
                              name: 'Person',
                              value: 'person',
                          },
                          {
                              name: 'Product',
                              value: 'product',
                          },
                      ],
                      default: 'deal',
                  },
                  {
                      displayName: 'Operation',
                      name: 'operation',
                      type: 'options',
                      noDataExpression: true,
                      displayOptions: {
                          show: {
                              resource: ['activity'],
                          },
                      },
                      options: [
                          {
                              name: 'Create',
                              value: 'create',
                              description: 'Create an activity',
                              action: 'Create an activity',
                          },
                          {
                              name: 'Delete',
                              value: 'delete',
                              description: 'Delete an activity',
                              action: 'Delete an activity',
                          },
                          {
                              name: 'Get',
                              value: 'get',
                              description: 'Get data of an activity',
                              action: 'Get an activity',
                          },
                          {
                              name: 'Get Many',
                              value: 'getAll',
                              description: 'Get data of many activities',
                              action: 'Get many activities',
                          },
                          {
                              name: 'Update',
                              value: 'update',
                              description: 'Update an activity',
                              action: 'Update an activity',
                          },
                      ],
                      default: 'create',
                  },
                  {
                      displayName: 'Operation',
                      name: 'operation',
                      type: 'options',
                      noDataExpression: true,
                      displayOptions: {
                          show: {
                              resource: ['deal'],
                          },
                      },
                      options: [
                          {
                              name: 'Create',
                              value: 'create',
                              description: 'Create a deal',
                              action: 'Create a deal',
                          },
                          {
                              name: 'Delete',
                              value: 'delete',
                              description: 'Delete a deal',
                              action: 'Delete a deal',
                          },
                          {
                              name: 'Duplicate',
                              value: 'duplicate',
                              description: 'Duplicate a deal',
                              action: 'Duplicate a deal',
                          },
                          {
                              name: 'Get',
                              value: 'get',
                              description: 'Get data of a deal',
                              action: 'Get a deal',
                          },
                          {
                              name: 'Get Many',
                              value: 'getAll',
                              description: 'Get data of many deals',
                              action: 'Get many deals',
                          },
                          {
                              name: 'Search',
                              value: 'search',
                              description: 'Search a deal',
                              action: 'Search a deal',
                          },
                          {
                              name: 'Update',
                              value: 'update',
                              description: 'Update a deal',
                              action: 'Update a deal',
                          },
                      ],
                      default: 'create',
                  },
                  {
                      displayName: 'Operation',
                      name: 'operation',
                      type: 'options',
                      noDataExpression: true,
                      displayOptions: {
                          show: {
                              resource: ['dealActivity'],
                          },
                      },
                      options: [
                          {
                              name: 'Get Many',
                              value: 'getAll',
                              description: 'Get many activities of a deal',
                              action: 'Get many deal activities',
                          },
                      ],
                      default: 'getAll',
                  },
                  {
                      displayName: 'Operation',
                      name: 'operation',
                      type: 'options',
                      noDataExpression: true,
                      displayOptions: {
                          show: {
                              resource: ['dealProduct'],
                          },
                      },
                      options: [
                          {
                              name: 'Add',
                              value: 'add',
                              description: 'Add a product to a deal',
                              action: 'Add a deal product',
                          },
                          {
                              name: 'Get Many',
                              value: 'getAll',
                              description: 'Get many products in a deal',
                              action: 'Get many deal products',
                          },
                          {
                              name: 'Remove',
                              value: 'remove',
                              description: 'Remove a product from a deal',
                              action: 'Remove a deal product',
                          },
                          {
                              name: 'Update',
                              value: 'update',
                              description: 'Update a product in a deal',
                              action: 'Update a deal product',
                          },
                      ],
                      default: 'add',
                  },
                  {
                      displayName: 'Operation',
                      name: 'operation',
                      type: 'options',
                      noDataExpression: true,
                      displayOptions: {
                          show: {
                              resource: ['file'],
                          },
                      },
                      options: [
                          {
                              name: 'Create',
                              value: 'create',
                              description: 'Create a file',
                              action: 'Create a file',
                          },
                          {
                              name: 'Delete',
                              value: 'delete',
                              description: 'Delete a file',
                              action: 'Delete a file',
                          },
                          {
                              name: 'Download',
                              value: 'download',
                              description: 'Download a file',
                              action: 'Download a file',
                          },
                          {
                              name: 'Get',
                              value: 'get',
                              description: 'Get data of a file',
                              action: 'Get a file',
                          },
                          {
                              name: 'Update',
                              value: 'update',
                              description: 'Update file details',
                              action: 'update details of a file',
                          },
                      ],
                      default: 'create',
                  },
                  {
                      displayName: 'Operation',
                      name: 'operation',
                      type: 'options',
                      noDataExpression: true,
                      displayOptions: {
                          show: {
                              resource: ['lead'],
                          },
                      },
                      options: [
                          {
                              name: 'Create',
                              value: 'create',
                              description: 'Create a lead',
                              action: 'Create a lead',
                          },
                          {
                              name: 'Delete',
                              value: 'delete',
                              description: 'Delete a lead',
                              action: 'Delete a lead',
                          },
                          {
                              name: 'Get',
                              value: 'get',
                              description: 'Get data of a lead',
                              action: 'Get a lead',
                          },
                          {
                              name: 'Get Many',
                              value: 'getAll',
                              description: 'Get data of many leads',
                              action: 'Get many leads',
                          },
                          {
                              name: 'Update',
                              value: 'update',
                              description: 'Update a lead',
                              action: 'Update a lead',
                          },
                      ],
                      default: 'create',
                  },
                  {
                      displayName: 'Operation',
                      name: 'operation',
                      type: 'options',
                      noDataExpression: true,
                      displayOptions: {
                          show: {
                              resource: ['note'],
                          },
                      },
                      options: [
                          {
                              name: 'Create',
                              value: 'create',
                              description: 'Create a note',
                              action: 'Create a note',
                          },
                          {
                              name: 'Delete',
                              value: 'delete',
                              description: 'Delete a note',
                              action: 'Delete a note',
                          },
                          {
                              name: 'Get',
                              value: 'get',
                              description: 'Get data of a note',
                              action: 'Get a note',
                          },
                          {
                              name: 'Get Many',
                              value: 'getAll',
                              description: 'Get data of many notes',
                              action: 'Get many notes',
                          },
                          {
                              name: 'Update',
                              value: 'update',
                              description: 'Update a note',
                              action: 'Update a note',
                          },
                      ],
                      default: 'create',
                  },
                  {
                      displayName: 'Operation',
                      name: 'operation',
                      type: 'options',
                      noDataExpression: true,
                      displayOptions: {
                          show: {
                              resource: ['organization'],
                          },
                      },
                      options: [
                          {
                              name: 'Create',
                              value: 'create',
                              description: 'Create an organization',
                              action: 'Create an organization',
                          },
                          {
                              name: 'Delete',
                              value: 'delete',
                              description: 'Delete an organization',
                              action: 'Delete an organization',
                          },
                          {
                              name: 'Get',
                              value: 'get',
                              description: 'Get data of an organization',
                              action: 'Get an organization',
                          },
                          {
                              name: 'Get Many',
                              value: 'getAll',
                              description: 'Get data of many organizations',
                              action: 'Get many organizations',
                          },
                          {
                              name: 'Search',
                              value: 'search',
                              description: 'Search organizations',
                              action: 'Search an organization',
                          },
                          {
                              name: 'Update',
                              value: 'update',
                              description: 'Update an organization',
                              action: 'Update an organization',
                          },
                      ],
                      default: 'create',
                  },
                  {
                      displayName: 'Operation',
                      name: 'operation',
                      type: 'options',
                      noDataExpression: true,
                      displayOptions: {
                          show: {
                              resource: ['person'],
                          },
                      },
                      options: [
                          {
                              name: 'Create',
                              value: 'create',
                              description: 'Create a person',
                              action: 'Create a person',
                          },
                          {
                              name: 'Delete',
                              value: 'delete',
                              description: 'Delete a person',
                              action: 'Delete a person',
                          },
                          {
                              name: 'Get',
                              value: 'get',
                              description: 'Get data of a person',
                              action: 'Get a person',
                          },
                          {
                              name: 'Get Many',
                              value: 'getAll',
                              description: 'Get data of many persons',
                              action: 'Get many people',
                          },
                          {
                              name: 'Search',
                              value: 'search',
                              description: 'Search all persons',
                              action: 'Search a person',
                          },
                          {
                              name: 'Update',
                              value: 'update',
                              description: 'Update a person',
                              action: 'Update a person',
                          },
                      ],
                      default: 'create',
                  },
                  {
                      displayName: 'Operation',
                      name: 'operation',
                      type: 'options',
                      noDataExpression: true,
                      displayOptions: {
                          show: {
                              resource: ['product'],
                          },
                      },
                      options: [
                          {
                              name: 'Get Many',
                              value: 'getAll',
                              description: 'Get data of many products',
                              action: 'Get many products',
                          },
                      ],
                      default: 'getAll',
                  },
                  {
                      displayName: 'Subject',
                      name: 'subject',
                      type: 'string',
                      default: '',
                      required: true,
                      displayOptions: {
                          show: {
                              operation: ['create'],
                              resource: ['activity'],
                          },
                      },
                      description: 'The subject of the activity to create',
                  },
                  {
                      displayName: 'Done',
                      name: 'done',
                      type: 'options',
                      displayOptions: {
                          show: {
                              operation: ['create'],
                              resource: ['activity'],
                          },
                      },
                      options: [
                          {
                              name: 'Not Done',
                              value: '0',
                          },
                          {
                              name: 'Done',
                              value: '1',
                          },
                      ],
                      default: '0',
                      description: 'Whether the activity is done or not',
                  },
                  {
                      displayName: 'Type',
                      name: 'type',
                      type: 'string',
                      default: '',
                      required: true,
                      displayOptions: {
                          show: {
                              operation: ['create'],
                              resource: ['activity'],
                          },
                      },
                      placeholder: 'call',
                      description: 'Type of the activity like "call", "meeting", etc',
                  },
                  {
                      displayName: 'Additional Fields',
                      name: 'additionalFields',
                      type: 'collection',
                      placeholder: 'Add Field',
                      displayOptions: {
                          show: {
                              operation: ['create'],
                              resource: ['activity'],
                          },
                      },
                      default: {},
                      options: [
                          {
                              displayName: 'Deal ID',
                              name: 'deal_id',
                              type: 'number',
                              default: 0,
                              description: 'ID of the deal this activity will be associated with',
                          },
                          {
                              displayName: 'Due Date',
                              name: 'due_date',
                              type: 'dateTime',
                              default: '',
                              description: 'Due Date to activity be done YYYY-MM-DD',
                          },
                          {
                              displayName: 'Note',
                              name: 'note',
                              type: 'string',
                              typeOptions: {
                                  rows: 5,
                              },
                              default: '',
                              description: 'Note of the activity (HTML format)',
                          },
                          {
                              displayName: 'Organization Name or ID',
                              name: 'org_id',
                              type: 'options',
                              typeOptions: {
                                  loadOptionsMethod: 'getOrganizationIds',
                              },
                              default: '',
                              description: 'ID of the organization this activity will be associated with. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code-examples/expressions/">expression</a>.',
                          },
                          {
                              displayName: 'Person ID',
                              name: 'person_id',
                              type: 'number',
                              default: 0,
                              description: 'ID of the person this activity will be associated with',
                          },
                          {
                              displayName: 'User Name or ID',
                              name: 'user_id',
                              type: 'options',
                              typeOptions: {
                                  loadOptionsMethod: 'getUserIds',
                              },
                              default: '',
                              description: 'ID of the active user whom the activity will be assigned to. If omitted, the activity will be assigned to the authorized user. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code-examples/expressions/">expression</a>.',
                          },
                          {
                              displayName: 'Custom Properties',
                              name: 'customProperties',
                              placeholder: 'Add Custom Property',
                              description: 'Adds a custom property to set also values which have not been predefined',
                              type: 'fixedCollection',
                              typeOptions: {
                                  multipleValues: true,
                              },
                              default: {},
                              options: [
                                  {
                                      name: 'property',
                                      displayName: 'Property',
                                      values: [
                                          {
                                              displayName: 'Property Name',
                                              name: 'name',
                                              type: 'string',
                                              default: '',
                                              description: 'Name of the property to set',
                                          },
                                          {
                                              displayName: 'Property Value',
                                              name: 'value',
                                              type: 'string',
                                              default: '',
                                              description: 'Value of the property to set',
                                          },
                                      ],
                                  },
                              ],
                          },
                      ],
                  },
                  {
                      displayName: 'Activity ID',
                      name: 'activityId',
                      type: 'number',
                      displayOptions: {
                          show: {
                              operation: ['delete'],
                              resource: ['activity'],
                          },
                      },
                      default: 0,
                      required: true,
                      description: 'ID of the activity to delete',
                  },
                  {
                      displayName: 'Activity ID',
                      name: 'activityId',
                      type: 'number',
                      displayOptions: {
                          show: {
                              operation: ['get'],
                              resource: ['activity'],
                          },
                      },
                      default: 0,
                      required: true,
                      description: 'ID of the activity to get',
                  },
                  {
                      displayName: 'Activity ID',
                      name: 'activityId',
                      type: 'number',
                      displayOptions: {
                          show: {
                              operation: ['update'],
                              resource: ['activity'],
                          },
                      },
                      default: 0,
                      required: true,
                      description: 'ID of the activity to update',
                  },
                  {
                      displayName: 'Update Fields',
                      name: 'updateFields',
                      type: 'collection',
                      placeholder: 'Add Field',
                      displayOptions: {
                          show: {
                              operation: ['update'],
                              resource: ['activity'],
                          },
                      },
                      default: {},
                      options: [
                          {
                              displayName: 'Deal ID',
                              name: 'deal_id',
                              type: 'number',
                              default: 0,
                              description: 'ID of the deal this activity will be associated with',
                          },
                          {
                              displayName: 'Due Date',
                              name: 'due_date',
                              type: 'dateTime',
                              default: '',
                              description: 'Due Date to activity be done YYYY-MM-DD',
                          },
                          {
                              displayName: 'Done',
                              name: 'done',
                              type: 'options',
                              options: [
                                  {
                                      name: 'Not Done',
                                      value: '0',
                                  },
                                  {
                                      name: 'Done',
                                      value: '1',
                                  },
                              ],
                              default: '0',
                              description: 'Whether the activity is done or not',
                          },
                          {
                              displayName: 'Note',
                              name: 'note',
                              type: 'string',
                              typeOptions: {
                                  rows: 5,
                              },
                              default: '',
                              description: 'Note of the activity (HTML format)',
                          },
                          {
                              displayName: 'Organization Name or ID',
                              name: 'org_id',
                              type: 'options',
                              typeOptions: {
                                  loadOptionsMethod: 'getOrganizationIds',
                              },
                              default: '',
                              description: 'ID of the organization this activity will be associated with. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code-examples/expressions/">expression</a>.',
                          },
                          {
                              displayName: 'Person ID',
                              name: 'person_id',
                              type: 'number',
                              default: 0,
                              description: 'ID of the person this activity will be associated with',
                          },
                          {
                              displayName: 'Subject',
                              name: 'subject',
                              type: 'string',
                              default: '',
                              description: 'The subject of the activity',
                          },
                          {
                              displayName: 'Type',
                              name: 'type',
                              type: 'string',
                              default: '',
                              placeholder: 'call',
                              description: 'Type of the activity like "call", "meeting", etc',
                          },
                          {
                              displayName: 'User Name or ID',
                              name: 'user_id',
                              type: 'options',
                              typeOptions: {
                                  loadOptionsMethod: 'getUserIds',
                              },
                              default: '',
                              description: 'ID of the active user whom the activity will be assigned to. If omitted, the activity will be assigned to the authorized user. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code-examples/expressions/">expression</a>.',
                          },
                          {
                              displayName: 'Custom Properties',
                              name: 'customProperties',
                              placeholder: 'Add Custom Property',
                              description: 'Adds a custom property to set also values which have not been predefined',
                              type: 'fixedCollection',
                              typeOptions: {
                                  multipleValues: true,
                              },
                              default: {},
                              options: [
                                  {
                                      name: 'property',
                                      displayName: 'Property',
                                      values: [
                                          {
                                              displayName: 'Property Name',
                                              name: 'name',
                                              type: 'string',
                                              default: '',
                                              description: 'Name of the property to set',
                                          },
                                          {
                                              displayName: 'Property Value',
                                              name: 'value',
                                              type: 'string',
                                              default: '',
                                              description: 'Value of the property to set',
                                          },
                                      ],
                                  },
                              ],
                          },
                      ],
                  },
                  {
                      displayName: 'Title',
                      name: 'title',
                      type: 'string',
                      default: '',
                      required: true,
                      displayOptions: {
                          show: {
                              operation: ['create'],
                              resource: ['deal'],
                          },
                      },
                      description: 'The title of the deal to create',
                  },
                  {
                      displayName: 'Associate With',
                      name: 'associateWith',
                      type: 'options',
                      options: [
                          {
                              name: 'Organization',
                              value: 'organization',
                          },
                          {
                              name: 'Person',
                              value: 'person',
                          },
                      ],
                      default: 'organization',
                      description: 'Type of entity to link to this deal',
                      required: true,
                      displayOptions: {
                          show: {
                              resource: ['deal'],
                              operation: ['create'],
                          },
                      },
                  },
                  {
                      displayName: 'Organization ID',
                      name: 'org_id',
                      type: 'number',
                      default: 0,
                      description: 'ID of the organization this deal will be associated with',
                      required: true,
                      displayOptions: {
                          show: {
                              operation: ['create'],
                              resource: ['deal'],
                              associateWith: ['organization'],
                          },
                      },
                  },
                  {
                      displayName: 'Person ID',
                      name: 'person_id',
                      type: 'number',
                      default: 0,
                      description: 'ID of the person this deal will be associated with',
                      displayOptions: {
                          show: {
                              operation: ['create'],
                              resource: ['deal'],
                              associateWith: ['person'],
                          },
                      },
                  },
                  {
                      displayName: 'Additional Fields',
                      name: 'additionalFields',
                      type: 'collection',
                      placeholder: 'Add Field',
                      displayOptions: {
                          show: {
                              operation: ['create'],
                              resource: ['deal'],
                          },
                      },
                      default: {},
                      options: [
                          {
                              displayName: 'Currency',
                              name: 'currency',
                              type: 'string',
                              default: 'USD',
                              description: 'Currency of the deal. Accepts a 3-character currency code. Like EUR, USD, ...',
                          },
                          {
                              displayName: 'Custom Properties',
                              name: 'customProperties',
                              placeholder: 'Add Custom Property',
                              description: 'Adds a custom property to set also values which have not been predefined',
                              type: 'fixedCollection',
                              typeOptions: {
                                  multipleValues: true,
                              },
                              default: {},
                              options: [
                                  {
                                      name: 'property',
                                      displayName: 'Property',
                                      values: [
                                          {
                                              displayName: 'Property Name or ID',
                                              name: 'name',
                                              type: 'options',
                                              typeOptions: {
                                                  loadOptionsMethod: 'getDealCustomFields',
                                              },
                                              default: '',
                                              description: 'Name of the property to set. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code-examples/expressions/">expression</a>.',
                                          },
                                          {
                                              displayName: 'Property Value',
                                              name: 'value',
                                              type: 'string',
                                              default: '',
                                              description: 'Value of the property to set',
                                          },
                                      ],
                                  },
                              ],
                          },
                          {
                              displayName: 'Label Name or ID',
                              name: 'label',
                              type: 'options',
                              description: 'Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code-examples/expressions/">expression</a>',
                              typeOptions: {
                                  loadOptionsMethod: 'getDealLabels',
                              },
                              default: '',
                          },
                          {
                              displayName: 'Lost Reason',
                              name: 'lost_reason',
                              type: 'string',
                              default: '',
                              description: 'Reason why the deal was lost',
                          },
                          {
                              displayName: 'Organization ID',
                              name: 'org_id',
                              type: 'number',
                              default: 0,
                              displayOptions: {
                                  show: {
                                      '/associateWith': ['person'],
                                  },
                              },
                              description: 'ID of the organization this deal will be associated with',
                          },
                          {
                              displayName: 'Person ID',
                              name: 'person_id',
                              type: 'number',
                              default: 0,
                              displayOptions: {
                                  show: {
                                      '/associateWith': ['organization'],
                                  },
                              },
                              description: 'ID of the person this deal will be associated with',
                          },
                          {
                              displayName: 'Probability',
                              name: 'probability',
                              type: 'number',
                              typeOptions: {
                                  minValue: 0,
                                  maxValue: 100,
                              },
                              default: 0,
                              description: 'Deal success probability percentage',
                          },
                          {
                              displayName: 'Stage Name or ID',
                              name: 'stage_id',
                              type: 'options',
                              typeOptions: {
                                  loadOptionsMethod: 'getStageIds',
                              },
                              default: '',
                              description: 'ID of the stage this deal will be placed in a pipeline. If omitted, the deal will be placed in the first stage of the default pipeline. (PIPELINE > STAGE). Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code-examples/expressions/">expression</a>.',
                          },
                          {
                              displayName: 'Status',
                              name: 'status',
                              type: 'options',
                              options: [
                                  {
                                      name: 'Open',
                                      value: 'open',
                                  },
                                  {
                                      name: 'Won',
                                      value: 'won',
                                  },
                                  {
                                      name: 'Lost',
                                      value: 'lost',
                                  },
                                  {
                                      name: 'Deleted',
                                      value: 'deleted',
                                  },
                              ],
                              default: 'open',
                              description: 'The status of the deal. If not provided it will automatically be set to "open".',
                          },
                          {
                              displayName: 'User Name or ID',
                              name: 'user_id',
                              type: 'options',
                              typeOptions: {
                                  loadOptionsMethod: 'getUserIds',
                              },
                              default: '',
                              description: 'ID of the active user whom the activity will be assigned to. If omitted, the activity will be assigned to the authorized user. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code-examples/expressions/">expression</a>.',
                          },
                          {
                              displayName: 'Value',
                              name: 'value',
                              type: 'number',
                              default: 0,
                              description: 'Value of the deal. If not set it will automatically be set to 0.',
                          },
                          {
                              displayName: 'Visible To',
                              name: 'visible_to',
                              type: 'options',
                              options: [
                                  {
                                      name: 'Owner & Followers (Private)',
                                      value: '1',
                                  },
                                  {
                                      name: 'Entire Company (Shared)',
                                      value: '3',
                                  },
                              ],
                              default: '3',
                              description: 'Visibility of the deal. If omitted, visibility will be set to the default visibility setting of this item type for the authorized user.',
                          },
                      ],
                  },
                  {
                      displayName: 'Deal ID',
                      name: 'dealId',
                      type: 'number',
                      displayOptions: {
                          show: {
                              operation: ['delete'],
                              resource: ['deal'],
                          },
                      },
                      default: 0,
                      required: true,
                      description: 'ID of the deal to delete',
                  },
                  {
                      displayName: 'Deal ID',
                      name: 'dealId',
                      type: 'number',
                      displayOptions: {
                          show: {
                              operation: ['duplicate'],
                              resource: ['deal'],
                          },
                      },
                      default: 0,
                      required: true,
                      description: 'ID of the deal to duplicate',
                  },
                  {
                      displayName: 'Deal ID',
                      name: 'dealId',
                      type: 'number',
                      displayOptions: {
                          show: {
                              operation: ['get'],
                              resource: ['deal'],
                          },
                      },
                      default: 0,
                      required: true,
                      description: 'ID of the deal to get',
                  },
                  {
                      displayName: 'Deal ID',
                      name: 'dealId',
                      type: 'number',
                      displayOptions: {
                          show: {
                              operation: ['update'],
                              resource: ['deal'],
                          },
                      },
                      default: 0,
                      required: true,
                      description: 'ID of the deal to update',
                  },
                  {
                      displayName: 'Update Fields',
                      name: 'updateFields',
                      type: 'collection',
                      placeholder: 'Add Field',
                      displayOptions: {
                          show: {
                              operation: ['update'],
                              resource: ['deal'],
                          },
                      },
                      default: {},
                      options: [
                          {
                              displayName: 'Currency',
                              name: 'currency',
                              type: 'string',
                              default: 'USD',
                              description: 'Currency of the deal. Accepts a 3-character currency code. Like EUR, USD, ...',
                          },
                          {
                              displayName: 'Custom Properties',
                              name: 'customProperties',
                              placeholder: 'Add Custom Property',
                              description: 'Adds a custom property to set also values which have not been predefined',
                              type: 'fixedCollection',
                              typeOptions: {
                                  multipleValues: true,
                              },
                              default: {},
                              options: [
                                  {
                                      name: 'property',
                                      displayName: 'Property',
                                      values: [
                                          {
                                              displayName: 'Property Name or ID',
                                              name: 'name',
                                              type: 'options',
                                              typeOptions: {
                                                  loadOptionsMethod: 'getDealCustomFields',
                                              },
                                              default: '',
                                              description: 'Name of the custom field to set. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code-examples/expressions/">expression</a>.',
                                          },
                                          {
                                              displayName: 'Property Value',
                                              name: 'value',
                                              type: 'string',
                                              default: '',
                                              description: 'Value of the property to set',
                                          },
                                      ],
                                  },
                              ],
                          },
                          {
                              displayName: 'User Name or ID',
                              name: 'user_id',
                              type: 'options',
                              typeOptions: {
                                  loadOptionsMethod: 'getUserIds',
                              },
                              default: '',
                              description: 'ID of the active user whom the activity will be assigned to. If omitted, the activity will be assigned to the authorized user. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code-examples/expressions/">expression</a>.',
                          },
                          {
                              displayName: 'Label Name or ID',
                              name: 'label',
                              type: 'options',
                              description: 'Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code-examples/expressions/">expression</a>',
                              typeOptions: {
                                  loadOptionsMethod: 'getDealLabels',
                              },
                              default: '',
                          },
                          {
                              displayName: 'Lost Reason',
                              name: 'lost_reason',
                              type: 'string',
                              default: '',
                              description: 'Reason why the deal was lost',
                          },
                          {
                              displayName: 'Organization Name or ID',
                              name: 'org_id',
                              type: 'options',
                              typeOptions: {
                                  loadOptionsMethod: 'getOrganizationIds',
                              },
                              default: '',
                              description: 'ID of the organization this deal will be associated with. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code-examples/expressions/">expression</a>.',
                          },
                          {
                              displayName: 'Person ID',
                              name: 'person_id',
                              type: 'number',
                              default: 0,
                              description: 'ID of the person this deal will be associated with',
                          },
                          {
                              displayName: 'Probability',
                              name: 'probability',
                              type: 'number',
                              typeOptions: {
                                  minValue: 0,
                                  maxValue: 100,
                              },
                              default: 0,
                              description: 'Deal success probability percentage',
                          },
                          {
                              displayName: 'Stage Name or ID',
                              name: 'stage_id',
                              type: 'options',
                              typeOptions: {
                                  loadOptionsMethod: 'getStageIds',
                              },
                              default: '',
                              description: 'ID of the stage this deal will be placed in a pipeline. If omitted, the deal will be placed in the first stage of the default pipeline. (PIPELINE > STAGE). Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code-examples/expressions/">expression</a>.',
                          },
                          {
                              displayName: 'Status',
                              name: 'status',
                              type: 'options',
                              options: [
                                  {
                                      name: 'Open',
                                      value: 'open',
                                  },
                                  {
                                      name: 'Won',
                                      value: 'won',
                                  },
                                  {
                                      name: 'Lost',
                                      value: 'lost',
                                  },
                                  {
                                      name: 'Deleted',
                                      value: 'deleted',
                                  },
                              ],
                              default: 'open',
                              description: 'The status of the deal. If not provided it will automatically be set to "open".',
                          },
                          {
                              displayName: 'Title',
                              name: 'title',
                              type: 'string',
                              default: '',
                              description: 'The title of the deal',
                          },
                          {
                              displayName: 'Value',
                              name: 'value',
                              type: 'number',
                              default: 0,
                              description: 'Value of the deal. If not set it will automatically be set to 0.',
                          },
                          {
                              displayName: 'Visible To',
                              name: 'visible_to',
                              type: 'options',
                              options: [
                                  {
                                      name: 'Owner & Followers (Private)',
                                      value: '1',
                                  },
                                  {
                                      name: 'Entire Company (Shared)',
                                      value: '3',
                                  },
                              ],
                              default: '3',
                              description: 'Visibility of the deal. If omitted, visibility will be set to the default visibility setting of this item type for the authorized user.',
                          },
                      ],
                  },
                  {
                      displayName: 'Deal Name or ID',
                      name: 'dealId',
                      type: 'options',
                      default: '',
                      typeOptions: {
                          loadOptionsMethod: 'getDeals',
                      },
                      required: true,
                      displayOptions: {
                          show: {
                              operation: ['add'],
                              resource: ['dealProduct'],
                          },
                      },
                      description: 'The ID of the deal to add a product to. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code-examples/expressions/">expression</a>.',
                  },
                  {
                      displayName: 'Product Name or ID',
                      name: 'productId',
                      type: 'options',
                      default: '',
                      typeOptions: {
                          loadOptionsMethod: 'getProducts',
                      },
                      required: true,
                      displayOptions: {
                          show: {
                              operation: ['add'],
                              resource: ['dealProduct'],
                          },
                      },
                      description: 'The ID of the product to add to a deal. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code-examples/expressions/">expression</a>.',
                  },
                  {
                      displayName: 'Item Price',
                      name: 'item_price',
                      type: 'number',
                      typeOptions: {
                          numberPrecision: 2,
                      },
                      default: 0.0,
                      required: true,
                      description: 'Price at which to add or update this product in a deal',
                      displayOptions: {
                          show: {
                              operation: ['add'],
                              resource: ['dealProduct'],
                          },
                      },
                  },
                  {
                      displayName: 'Quantity',
                      name: 'quantity',
                      type: 'number',
                      default: 1,
                      typeOptions: {
                          minValue: 1,
                      },
                      required: true,
                      description: 'How many items of this product to add/update in a deal',
                      displayOptions: {
                          show: {
                              operation: ['add'],
                              resource: ['dealProduct'],
                          },
                      },
                  },
                  {
                      displayName: 'Additional Fields',
                      name: 'additionalFields',
                      type: 'collection',
                      placeholder: 'Add Field',
                      displayOptions: {
                          show: {
                              operation: ['add'],
                              resource: ['dealProduct'],
                          },
                      },
                      default: {},
                      options: [
                          {
                              displayName: 'Comments',
                              name: 'comments',
                              type: 'string',
                              typeOptions: {
                                  rows: 4,
                              },
                              default: '',
                              description: 'Text to describe this product-deal attachment',
                          },
                          {
                              displayName: 'Discount Percentage',
                              name: 'discount_percentage',
                              type: 'number',
                              default: 0,
                              typeOptions: {
                                  minValue: 0,
                                  maxValue: 100,
                              },
                              description: 'Percentage of discount to apply',
                          },
                          {
                              displayName: 'Product Variation ID',
                              name: 'product_variation_id',
                              type: 'string',
                              default: '',
                              description: 'ID of the product variation to use',
                          },
                      ],
                  },
                  {
                      displayName: 'Deal Name or ID',
                      name: 'dealId',
                      type: 'options',
                      default: '',
                      typeOptions: {
                          loadOptionsMethod: 'getDeals',
                      },
                      required: true,
                      displayOptions: {
                          show: {
                              operation: ['update'],
                              resource: ['dealProduct'],
                          },
                      },
                      description: 'The ID of the deal whose product to update. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code-examples/expressions/">expression</a>.',
                  },
                  {
                      displayName: 'Product Attachment Name or ID',
                      name: 'productAttachmentId',
                      type: 'options',
                      default: '',
                      typeOptions: {
                          loadOptionsMethod: 'getProductsDeal',
                          loadOptionsDependsOn: ['dealId'],
                      },
                      required: true,
                      displayOptions: {
                          show: {
                              operation: ['update'],
                              resource: ['dealProduct'],
                          },
                      },
                      description: 'ID of the deal-product (the ID of the product attached to the deal). Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code-examples/expressions/">expression</a>.',
                  },
                  {
                      displayName: 'Update Fields',
                      name: 'updateFields',
                      type: 'collection',
                      placeholder: 'Add Field',
                      displayOptions: {
                          show: {
                              operation: ['update'],
                              resource: ['dealProduct'],
                          },
                      },
                      default: {},
                      options: [
                          {
                              displayName: 'Comments',
                              name: 'comments',
                              type: 'string',
                              typeOptions: {
                                  rows: 4,
                              },
                              default: '',
                              description: 'Text to describe this product-deal attachment',
                          },
                          {
                              displayName: 'Discount Percentage',
                              name: 'discount_percentage',
                              type: 'number',
                              default: 0,
                              typeOptions: {
                                  minValue: 0,
                                  maxValue: 100,
                              },
                              description: 'Percentage of discount to apply',
                          },
                          {
                              displayName: 'Item Price',
                              name: 'item_price',
                              type: 'number',
                              typeOptions: {
                                  numberPrecision: 2,
                              },
                              default: 0.0,
                              description: 'Price at which to add or update this product in a deal',
                          },
                          {
                              displayName: 'Quantity',
                              name: 'quantity',
                              type: 'number',
                              default: 1,
                              typeOptions: {
                                  minValue: 1,
                              },
                              description: 'How many items of this product to add/update in a deal',
                          },
                          {
                              displayName: 'Product Variation ID',
                              name: 'product_variation_id',
                              type: 'string',
                              default: '',
                              description: 'ID of the product variation to use',
                          },
                      ],
                  },
                  {
                      displayName: 'Deal Name or ID',
                      name: 'dealId',
                      type: 'options',
                      default: '',
                      typeOptions: {
                          loadOptionsMethod: 'getDeals',
                      },
                      required: true,
                      displayOptions: {
                          show: {
                              operation: ['remove'],
                              resource: ['dealProduct'],
                          },
                      },
                      description: 'The ID of the deal whose product to remove. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code-examples/expressions/">expression</a>.',
                  },
                  {
                      displayName: 'Product Attachment Name or ID',
                      name: 'productAttachmentId',
                      type: 'options',
                      default: '',
                      typeOptions: {
                          loadOptionsMethod: 'getProductsDeal',
                          loadOptionsDependsOn: ['dealId'],
                      },
                      required: true,
                      displayOptions: {
                          show: {
                              operation: ['remove'],
                              resource: ['dealProduct'],
                          },
                      },
                      description: 'ID of the deal-product (the ID of the product attached to the deal). Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code-examples/expressions/">expression</a>.',
                  },
                  {
                      displayName: 'Deal Name or ID',
                      name: 'dealId',
                      type: 'options',
                      default: '',
                      typeOptions: {
                          loadOptionsMethod: 'getDeals',
                      },
                      required: true,
                      displayOptions: {
                          show: {
                              operation: ['getAll'],
                              resource: ['dealProduct'],
                          },
                      },
                      description: 'The ID of the deal whose products to retrieve. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code-examples/expressions/">expression</a>.',
                  },
                  {
                      displayName: 'Term',
                      name: 'term',
                      type: 'string',
                      required: true,
                      displayOptions: {
                          show: {
                              operation: ['search'],
                              resource: ['deal'],
                          },
                      },
                      default: '',
                      description: 'The search term to look for. Minimum 2 characters (or 1 if using exact_match).',
                  },
                  {
                      displayName: 'Exact Match',
                      name: 'exactMatch',
                      type: 'boolean',
                      displayOptions: {
                          show: {
                              operation: ['search'],
                              resource: ['deal'],
                          },
                      },
                      default: false,
                      description: 'Whether only full exact matches against the given term are returned. It is not case sensitive.',
                  },
                  {
                      displayName: 'Return All',
                      name: 'returnAll',
                      type: 'boolean',
                      displayOptions: {
                          show: {
                              operation: ['search'],
                          },
                      },
                      default: false,
                      description: 'Whether to return all results or only up to a given limit',
                  },
                  {
                      displayName: 'Limit',
                      name: 'limit',
                      type: 'number',
                      displayOptions: {
                          show: {
                              operation: ['search'],
                              returnAll: [false],
                          },
                      },
                      typeOptions: {
                          minValue: 1,
                          maxValue: 500,
                      },
                      default: 100,
                      description: 'Max number of results to return',
                  },
                  {
                      displayName: 'Additional Fields',
                      name: 'additionalFields',
                      type: 'collection',
                      placeholder: 'Add Field',
                      displayOptions: {
                          show: {
                              operation: ['search'],
                              resource: ['deal'],
                          },
                      },
                      default: {},
                      options: [
                          {
                              displayName: 'Include Fields',
                              name: 'includeFields',
                              type: 'string',
                              default: '',
                              description: 'Supports including optional fields in the results which are not provided by default. Example: deal.cc_email.',
                          },
                          {
                              displayName: 'Organization ID',
                              name: 'organizationId',
                              type: 'string',
                              default: '',
                              description: 'Will filter Deals by the provided Organization ID',
                          },
                          {
                              displayName: 'Person ID',
                              name: 'personId',
                              type: 'string',
                              default: '',
                              description: 'Will filter Deals by the provided Person ID',
                          },
                          {
                              displayName: 'Search Fields',
                              name: 'fields',
                              type: 'multiOptions',
                              options: [
                                  {
                                      name: 'Custom Fields',
                                      value: 'custom_fields',
                                  },
                                  {
                                      name: 'Notes',
                                      value: 'notes',
                                  },
                                  {
                                      name: 'Title',
                                      value: 'title',
                                  },
                              ],
                              default: ['custom_fields', 'notes', 'title'],
                              description: 'A comma-separated string array. The fields to perform the search from. Defaults to all of them.',
                          },
                          {
                              displayName: 'Status',
                              name: 'status',
                              type: 'options',
                              options: [
                                  {
                                      name: 'Open',
                                      value: 'open',
                                  },
                                  {
                                      name: 'Won',
                                      value: 'won',
                                  },
                                  {
                                      name: 'Lost',
                                      value: 'lost',
                                  },
                              ],
                              default: 'open',
                              description: 'The status of the deal. If not provided it will automatically be set to "open".',
                          },
                      ],
                  },
                  {
                      displayName: 'Binary Property',
                      name: 'binaryPropertyName',
                      type: 'string',
                      default: 'data',
                      required: true,
                      displayOptions: {
                          show: {
                              operation: ['create'],
                              resource: ['file'],
                          },
                      },
                      placeholder: '',
                      description: 'Name of the binary property which contains the data for the file to be created',
                  },
                  {
                      displayName: 'Additional Fields',
                      name: 'additionalFields',
                      type: 'collection',
                      placeholder: 'Add Field',
                      displayOptions: {
                          show: {
                              operation: ['create'],
                              resource: ['file'],
                          },
                      },
                      default: {},
                      options: [
                          {
                              displayName: 'Activity ID',
                              name: 'activity_id',
                              type: 'number',
                              default: 0,
                              description: 'ID of the activite this file will be associated with',
                          },
                          {
                              displayName: 'Deal ID',
                              name: 'deal_id',
                              type: 'number',
                              default: 0,
                              description: 'ID of the deal this file will be associated with',
                          },
                          {
                              displayName: 'Organization Name or ID',
                              name: 'org_id',
                              type: 'options',
                              typeOptions: {
                                  loadOptionsMethod: 'getOrganizationIds',
                              },
                              default: '',
                              description: 'ID of the organization this deal will be associated with. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code-examples/expressions/">expression</a>.',
                          },
                          {
                              displayName: 'Person ID',
                              name: 'person_id',
                              type: 'number',
                              default: 0,
                              description: 'ID of the person this file will be associated with',
                          },
                          {
                              displayName: 'Product ID',
                              name: 'product_id',
                              type: 'number',
                              default: 0,
                              description: 'ID of the person this file will be associated with',
                          },
                      ],
                  },
                  {
                      displayName: 'File ID',
                      name: 'fileId',
                      type: 'number',
                      displayOptions: {
                          show: {
                              operation: ['delete'],
                              resource: ['file'],
                          },
                      },
                      default: 0,
                      required: true,
                      description: 'ID of the file to delete',
                  },
                  {
                      displayName: 'File ID',
                      name: 'fileId',
                      type: 'number',
                      displayOptions: {
                          show: {
                              operation: ['download'],
                              resource: ['file'],
                          },
                      },
                      default: 0,
                      required: true,
                      description: 'ID of the file to download',
                  },
                  {
                      displayName: 'Binary Property',
                      name: 'binaryPropertyName',
                      type: 'string',
                      required: true,
                      default: 'data',
                      displayOptions: {
                          show: {
                              operation: ['download'],
                              resource: ['file'],
                          },
                      },
                      description: 'Name of the binary property to which to write the data of the downloaded file',
                  },
                  {
                      displayName: 'File ID',
                      name: 'fileId',
                      type: 'number',
                      displayOptions: {
                          show: {
                              operation: ['get'],
                              resource: ['file'],
                          },
                      },
                      default: 0,
                      required: true,
                      description: 'ID of the file to get',
                  },
                  {
                      displayName: 'File ID',
                      name: 'fileId',
                      type: 'number',
                      displayOptions: {
                          show: {
                              operation: ['update'],
                              resource: ['file'],
                          },
                      },
                      default: 0,
                      required: true,
                      description: 'ID of the file to update',
                  },
                  {
                      displayName: 'Update Fields',
                      name: 'updateFields',
                      type: 'collection',
                      placeholder: 'Add Field',
                      displayOptions: {
                          show: {
                              operation: ['update'],
                              resource: ['file'],
                          },
                      },
                      default: {},
                      options: [
                          {
                              displayName: 'Name',
                              name: 'name',
                              type: 'string',
                              default: '',
                              description: 'The updated visible name of the file',
                          },
                          {
                              displayName: 'Description',
                              name: 'description',
                              type: 'string',
                              default: '',
                              description: 'The updated description of the file',
                          },
                      ],
                  },
                  {
                      displayName: 'Title',
                      name: 'title',
                      description: 'Name of the lead to create',
                      type: 'string',
                      required: true,
                      default: '',
                      displayOptions: {
                          show: {
                              resource: ['lead'],
                              operation: ['create'],
                          },
                      },
                  },
                  {
                      displayName: 'Associate With',
                      name: 'associateWith',
                      type: 'options',
                      options: [
                          {
                              name: 'Organization',
                              value: 'organization',
                          },
                          {
                              name: 'Person',
                              value: 'person',
                          },
                      ],
                      default: 'organization',
                      description: 'Type of entity to link to this lead',
                      required: true,
                      displayOptions: {
                          show: {
                              resource: ['lead'],
                              operation: ['create'],
                          },
                      },
                  },
                  {
                      displayName: 'Organization ID',
                      name: 'organization_id',
                      type: 'number',
                      default: 0,
                      description: 'ID of the organization to link to this lead',
                      required: true,
                      displayOptions: {
                          show: {
                              resource: ['lead'],
                              operation: ['create'],
                              associateWith: ['organization'],
                          },
                      },
                  },
                  {
                      displayName: 'Person ID',
                      name: 'person_id',
                      type: 'number',
                      default: 0,
                      description: 'ID of the person to link to this lead',
                      required: true,
                      displayOptions: {
                          show: {
                              resource: ['lead'],
                              operation: ['create'],
                              associateWith: ['person'],
                          },
                      },
                  },
                  {
                      displayName: 'Additional Fields',
                      name: 'additionalFields',
                      type: 'collection',
                      placeholder: 'Add Field',
                      default: {},
                      displayOptions: {
                          show: {
                              resource: ['lead'],
                              operation: ['create'],
                          },
                      },
                      options: [
                          {
                              displayName: 'Expected Close Date',
                              name: 'expected_close_date',
                              type: 'dateTime',
                              default: '',
                              description: 'Date when the lead’s deal is expected to be closed, in ISO-8601 format',
                          },
                          {
                              displayName: 'Label Names or IDs',
                              name: 'label_ids',
                              type: 'multiOptions',
                              typeOptions: {
                                  loadOptionsMethod: 'getLeadLabels',
                              },
                              default: [],
                              description: 'ID of the labels to attach to the lead to create. Choose from the list, or specify IDs using an <a href="https://docs.n8n.io/code-examples/expressions/">expression</a>.',
                          },
                          {
                              displayName: 'Organization ID',
                              name: 'organization_id',
                              type: 'number',
                              default: 0,
                              description: 'ID of the organization to link to this lead',
                              displayOptions: {
                                  show: {
                                      '/associateWith': ['person'],
                                  },
                              },
                          },
                          {
                              displayName: 'Owner Name or ID',
                              name: 'owner_id',
                              type: 'options',
                              typeOptions: {
                                  loadOptionsMethod: 'getUserIds',
                              },
                              default: '',
                              description: 'ID of the user who will own the lead to create. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code-examples/expressions/">expression</a>.',
                          },
                          {
                              displayName: 'Person ID',
                              name: 'person_id',
                              type: 'number',
                              default: 0,
                              description: 'ID of the person to link to this lead',
                              displayOptions: {
                                  show: {
                                      '/associateWith': ['organization'],
                                  },
                              },
                          },
                          {
                              displayName: 'Value',
                              name: 'value',
                              type: 'fixedCollection',
                              description: 'Potential monetary value associated with the lead',
                              default: {},
                              options: [
                                  {
                                      displayName: 'Value Properties',
                                      name: 'valueProperties',
                                      values: [
                                          {
                                              displayName: 'Amount',
                                              name: 'amount',
                                              type: 'number',
                                              default: '',
                                          },
                                          {
                                              displayName: 'Currency',
                                              name: 'currency',
                                              type: 'options',
                                              default: 'USD',
                                              options: utils_1.currencies.sort((a, b) => a.name.localeCompare(b.name)),
                                          },
                                      ],
                                  },
                              ],
                          },
                      ],
                  },
                  {
                      displayName: 'Lead ID',
                      name: 'leadId',
                      description: 'ID of the lead to delete',
                      type: 'string',
                      required: true,
                      default: '',
                      displayOptions: {
                          show: {
                              resource: ['lead'],
                              operation: ['delete'],
                          },
                      },
                  },
                  {
                      displayName: 'Lead ID',
                      name: 'leadId',
                      description: 'ID of the lead to retrieve',
                      type: 'string',
                      required: true,
                      default: '',
                      displayOptions: {
                          show: {
                              resource: ['lead'],
                              operation: ['get'],
                          },
                      },
                  },
                  {
                      displayName: 'Lead ID',
                      name: 'leadId',
                      description: 'ID of the lead to update',
                      type: 'string',
                      required: true,
                      default: '',
                      displayOptions: {
                          show: {
                              resource: ['lead'],
                              operation: ['update'],
                          },
                      },
                  },
                  {
                      displayName: 'Update Fields',
                      name: 'updateFields',
                      type: 'collection',
                      placeholder: 'Add Field',
                      default: {},
                      displayOptions: {
                          show: {
                              resource: ['lead'],
                              operation: ['update'],
                          },
                      },
                      options: [
                          {
                              displayName: 'Title',
                              name: 'title',
                              type: 'string',
                              default: '',
                              description: 'Name of the lead to update',
                          },
                          {
                              displayName: 'Owner Name or ID',
                              name: 'owner_id',
                              type: 'options',
                              typeOptions: {
                                  loadOptionsMethod: 'getUserIds',
                              },
                              default: '',
                              description: 'ID of the user who will own the lead to update. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code-examples/expressions/">expression</a>.',
                          },
                          {
                              displayName: 'Label Names or IDs',
                              name: 'label_ids',
                              type: 'multiOptions',
                              typeOptions: {
                                  loadOptionsMethod: 'getLeadLabels',
                              },
                              default: [],
                              description: 'ID of the labels to attach to the lead to update. Choose from the list, or specify IDs using an <a href="https://docs.n8n.io/code-examples/expressions/">expression</a>.',
                          },
                          {
                              displayName: 'Person Name or ID',
                              name: 'person_id',
                              type: 'options',
                              typeOptions: {
                                  loadOptionsMethod: 'getPersons',
                              },
                              default: '',
                              description: 'ID of the person to link to this lead. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code-examples/expressions/">expression</a>.',
                          },
                          {
                              displayName: 'Value',
                              name: 'value',
                              type: 'fixedCollection',
                              description: 'Potential monetary value associated with the lead',
                              default: {},
                              options: [
                                  {
                                      displayName: 'Value Properties',
                                      name: 'valueProperties',
                                      values: [
                                          {
                                              displayName: 'Amount',
                                              name: 'amount',
                                              type: 'number',
                                              default: '',
                                          },
                                          {
                                              displayName: 'Currency',
                                              name: 'currency',
                                              type: 'options',
                                              default: 'USD',
                                              options: utils_1.currencies.sort((a, b) => a.name.localeCompare(b.name)),
                                          },
                                      ],
                                  },
                              ],
                          },
                          {
                              displayName: 'Expected Close Date',
                              name: 'expected_close_date',
                              type: 'dateTime',
                              default: '',
                              description: 'Date when the lead’s deal is expected to be closed, in ISO-8601 format',
                          },
                      ],
                  },
                  {
                      displayName: 'Content',
                      name: 'content',
                      typeOptions: {
                          rows: 5,
                      },
                      type: 'string',
                      default: '',
                      required: true,
                      displayOptions: {
                          show: {
                              operation: ['create'],
                              resource: ['note'],
                          },
                      },
                      description: 'The content of the note to create',
                  },
                  {
                      displayName: 'Note ID',
                      name: 'noteId',
                      type: 'number',
                      displayOptions: {
                          show: {
                              operation: ['delete'],
                              resource: ['note'],
                          },
                      },
                      default: 0,
                      required: true,
                      description: 'ID of the note to delete',
                  },
                  {
                      displayName: 'Note ID',
                      name: 'noteId',
                      type: 'number',
                      displayOptions: {
                          show: {
                              operation: ['get'],
                              resource: ['note'],
                          },
                      },
                      default: 0,
                      required: true,
                      description: 'ID of the note to get',
                  },
                  {
                      displayName: 'Note ID',
                      name: 'noteId',
                      type: 'number',
                      displayOptions: {
                          show: {
                              operation: ['update'],
                              resource: ['note'],
                          },
                      },
                      default: 0,
                      required: true,
                      description: 'ID of the note to update',
                  },
                  {
                      displayName: 'Update Fields',
                      name: 'updateFields',
                      type: 'collection',
                      placeholder: 'Add Field',
                      displayOptions: {
                          show: {
                              operation: ['update'],
                              resource: ['note'],
                          },
                      },
                      default: {},
                      options: [
                          {
                              displayName: 'Content',
                              name: 'content',
                              typeOptions: {
                                  rows: 5,
                              },
                              type: 'string',
                              default: '',
                              description: 'The content of the note',
                          },
                          {
                              displayName: 'Deal ID',
                              name: 'deal_id',
                              type: 'number',
                              default: 0,
                              description: 'ID of the deal this note will be associated with',
                          },
                          {
                              displayName: 'Lead ID',
                              name: 'lead_id',
                              type: 'number',
                              default: 0,
                              description: 'ID of the lead this note will be associated with',
                          },
                          {
                              displayName: 'Organization Name or ID',
                              name: 'org_id',
                              type: 'options',
                              typeOptions: {
                                  loadOptionsMethod: 'getOrganizationIds',
                              },
                              default: '',
                              description: 'ID of the organization this deal will be associated with. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code-examples/expressions/">expression</a>.',
                          },
                          {
                              displayName: 'Person ID',
                              name: 'person_id',
                              type: 'number',
                              default: 0,
                              description: 'ID of the person this note will be associated with',
                          },
                      ],
                  },
                  {
                      displayName: 'Name',
                      name: 'name',
                      type: 'string',
                      default: '',
                      required: true,
                      displayOptions: {
                          show: {
                              operation: ['create'],
                              resource: ['organization'],
                          },
                      },
                      description: 'The name of the organization to create',
                  },
                  {
                      displayName: 'Additional Fields',
                      name: 'additionalFields',
                      type: 'collection',
                      placeholder: 'Add Field',
                      displayOptions: {
                          show: {
                              operation: ['create'],
                              resource: ['organization'],
                          },
                      },
                      default: {},
                      options: [
                          {
                              displayName: 'Custom Properties',
                              name: 'customProperties',
                              placeholder: 'Add Custom Property',
                              description: 'Adds a custom property to set also values which have not been predefined',
                              type: 'fixedCollection',
                              typeOptions: {
                                  multipleValues: true,
                              },
                              default: {},
                              options: [
                                  {
                                      name: 'property',
                                      displayName: 'Property',
                                      values: [
                                          {
                                              displayName: 'Property Name',
                                              name: 'name',
                                              type: 'string',
                                              default: '',
                                              description: 'Name of the property to set',
                                          },
                                          {
                                              displayName: 'Property Value',
                                              name: 'value',
                                              type: 'string',
                                              default: '',
                                              description: 'Value of the property to set',
                                          },
                                      ],
                                  },
                              ],
                          },
                          {
                              displayName: 'Label Name or ID',
                              name: 'label',
                              type: 'options',
                              description: 'Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code-examples/expressions/">expression</a>',
                              typeOptions: {
                                  loadOptionsMethod: 'getOrganizationLabels',
                              },
                              default: '',
                          },
                          {
                              displayName: 'Visible To',
                              name: 'visible_to',
                              type: 'options',
                              options: [
                                  {
                                      name: 'Owner & Followers (Private)',
                                      value: '1',
                                  },
                                  {
                                      name: 'Entire Company (Shared)',
                                      value: '3',
                                  },
                              ],
                              default: '3',
                              description: 'Visibility of the person. If omitted, visibility will be set to the default visibility setting of this item type for the authorized user.',
                          },
                      ],
                  },
                  {
                      displayName: 'Organization ID',
                      name: 'organizationId',
                      type: 'number',
                      displayOptions: {
                          show: {
                              operation: ['delete'],
                              resource: ['organization'],
                          },
                      },
                      default: 0,
                      required: true,
                      description: 'ID of the organization to delete',
                  },
                  {
                      displayName: 'Organization ID',
                      name: 'organizationId',
                      type: 'number',
                      displayOptions: {
                          show: {
                              operation: ['get'],
                              resource: ['organization'],
                          },
                      },
                      default: 0,
                      required: true,
                      description: 'ID of the organization to get',
                  },
                  {
                      displayName: 'Term',
                      name: 'term',
                      type: 'string',
                      required: true,
                      displayOptions: {
                          show: {
                              operation: ['search'],
                              resource: ['organization'],
                          },
                      },
                      default: '',
                      description: 'The search term to look for. Minimum 2 characters (or 1 if using exact_match).',
                  },
                  {
                      displayName: 'Additional Fields',
                      name: 'additionalFields',
                      type: 'collection',
                      placeholder: 'Add Field',
                      displayOptions: {
                          show: {
                              operation: ['search'],
                              resource: ['organization'],
                          },
                      },
                      default: {},
                      options: [
                          {
                              displayName: 'Exact Match',
                              name: 'exactMatch',
                              type: 'boolean',
                              default: false,
                              description: 'Whether only full exact matches against the given term are returned. It is not case sensitive.',
                          },
                          {
                              displayName: 'Fields',
                              name: 'fields',
                              type: 'multiOptions',
                              default: [],
                              description: 'Fields to the search in. Defaults to all of them.',
                              options: [
                                  {
                                      name: 'Address',
                                      value: 'address',
                                  },
                                  {
                                      name: 'Custom Fields',
                                      value: 'custom_fields',
                                  },
                                  {
                                      name: 'Name',
                                      value: 'name',
                                  },
                                  {
                                      name: 'Notes',
                                      value: 'notes',
                                  },
                              ],
                          },
                          {
                              displayName: 'RAW Data',
                              name: 'rawData',
                              type: 'boolean',
                              default: false,
                              description: 'Whether to return the data exactly in the way it got received from the API',
                          },
                      ],
                  },
                  {
                      displayName: 'Organization ID',
                      name: 'organizationId',
                      type: 'number',
                      default: '',
                      required: true,
                      displayOptions: {
                          show: {
                              operation: ['update'],
                              resource: ['organization'],
                          },
                      },
                      description: 'The ID of the organization to create',
                  },
                  {
                      displayName: 'Update Fields',
                      name: 'updateFields',
                      type: 'collection',
                      placeholder: 'Add Field',
                      displayOptions: {
                          show: {
                              operation: ['update'],
                              resource: ['organization'],
                          },
                      },
                      default: {},
                      options: [
                          {
                              displayName: 'Custom Properties',
                              name: 'customProperties',
                              placeholder: 'Add Custom Property',
                              description: 'Adds a custom property to set also values which have not been predefined',
                              type: 'fixedCollection',
                              typeOptions: {
                                  multipleValues: true,
                              },
                              default: {},
                              options: [
                                  {
                                      name: 'property',
                                      displayName: 'Property',
                                      values: [
                                          {
                                              displayName: 'Property Name',
                                              name: 'name',
                                              type: 'string',
                                              default: '',
                                              description: 'Name of the property to set',
                                          },
                                          {
                                              displayName: 'Property Value',
                                              name: 'value',
                                              type: 'string',
                                              default: '',
                                              description: 'Value of the property to set',
                                          },
                                      ],
                                  },
                              ],
                          },
                          {
                              displayName: 'Label Name or ID',
                              name: 'label',
                              type: 'options',
                              description: 'Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code-examples/expressions/">expression</a>',
                              typeOptions: {
                                  loadOptionsMethod: 'getOrganizationLabels',
                              },
                              default: '',
                          },
                          {
                              displayName: 'Name',
                              name: 'name',
                              type: 'string',
                              default: '',
                              description: 'Organization name',
                          },
                          {
                              displayName: 'Owner ID',
                              name: 'owner_id',
                              type: 'number',
                              default: 0,
                              description: 'The ID of the user who will be marked as the owner of this Organization. When omitted, the authorized User ID will be used.',
                          },
                          {
                              displayName: 'Visible To',
                              name: 'visible_to',
                              type: 'options',
                              options: [
                                  {
                                      name: 'Owner & Followers (Private)',
                                      value: '1',
                                  },
                                  {
                                      name: 'Entire Company (Shared)',
                                      value: '3',
                                  },
                              ],
                              default: '3',
                              description: 'Visibility of the person. If omitted, visibility will be set to the default visibility setting of this item type for the authorized user.',
                          },
                      ],
                  },
                  {
                      displayName: 'Name',
                      name: 'name',
                      type: 'string',
                      default: '',
                      required: true,
                      displayOptions: {
                          show: {
                              operation: ['create'],
                              resource: ['person'],
                          },
                      },
                      description: 'The name of the person to create',
                  },
                  {
                      displayName: 'Additional Fields',
                      name: 'additionalFields',
                      type: 'collection',
                      placeholder: 'Add Field',
                      displayOptions: {
                          show: {
                              operation: ['create'],
                              resource: ['person'],
                          },
                      },
                      default: {},
                      options: [
                          {
                              displayName: 'Custom Properties',
                              name: 'customProperties',
                              placeholder: 'Add Custom Property',
                              description: 'Adds a custom property to set also values which have not been predefined',
                              type: 'fixedCollection',
                              typeOptions: {
                                  multipleValues: true,
                              },
                              default: {},
                              options: [
                                  {
                                      name: 'property',
                                      displayName: 'Property',
                                      values: [
                                          {
                                              displayName: 'Property Name or ID',
                                              name: 'name',
                                              type: 'options',
                                              typeOptions: {
                                                  loadOptionsMethod: 'getPersonCustomFields',
                                              },
                                              default: '',
                                              description: 'Name of the custom field to set. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code-examples/expressions/">expression</a>.',
                                          },
                                          {
                                              displayName: 'Property Value',
                                              name: 'value',
                                              type: 'string',
                                              default: '',
                                              description: 'Value of the property to set',
                                          },
                                      ],
                                  },
                              ],
                          },
                          {
                              displayName: 'Email',
                              name: 'email',
                              type: 'string',
                              placeholder: 'name@email.com',
                              typeOptions: {
                                  multipleValues: true,
                              },
                              default: '',
                              description: 'Email of the person',
                          },
                          {
                              displayName: 'Label Name or ID',
                              name: 'label',
                              type: 'options',
                              description: 'Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code-examples/expressions/">expression</a>',
                              typeOptions: {
                                  loadOptionsMethod: 'getPersonLabels',
                              },
                              default: '',
                          },
                          {
                              displayName: 'Marketing Status',
                              name: 'marketing_status',
                              type: 'options',
                              options: [
                                  {
                                      name: 'No Consent',
                                      value: 'no_consent',
                                  },
                                  {
                                      name: 'Unsubscribed',
                                      value: 'unsubscribed',
                                  },
                                  {
                                      name: 'Subscribed',
                                      value: 'subscribed',
                                  },
                                  {
                                      name: 'Archived',
                                      value: 'archived',
                                  },
                              ],
                              default: 'subscribed',
                              description: 'Please be aware that it is only allowed once to change the marketing status from an old status to a new one',
                          },
                          {
                              displayName: 'Organization Name or ID',
                              name: 'org_id',
                              type: 'options',
                              typeOptions: {
                                  loadOptionsMethod: 'getOrganizationIds',
                              },
                              default: '',
                              description: 'ID of the organization this deal will be associated with. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code-examples/expressions/">expression</a>.',
                          },
                          {
                              displayName: 'Phone',
                              name: 'phone',
                              type: 'string',
                              typeOptions: {
                                  multipleValues: true,
                              },
                              default: '',
                              description: 'Phone number of the person',
                          },
                          {
                              displayName: 'Visible To',
                              name: 'visible_to',
                              type: 'options',
                              options: [
                                  {
                                      name: 'Owner & Followers (Private)',
                                      value: '1',
                                  },
                                  {
                                      name: 'Entire Company (Shared)',
                                      value: '3',
                                  },
                              ],
                              default: '3',
                              description: 'Visibility of the person. If omitted, visibility will be set to the default visibility setting of this item type for the authorized user.',
                          },
                          {
                              displayName: 'User Name or ID',
                              name: 'owner_id',
                              type: 'options',
                              typeOptions: {
                                  loadOptionsMethod: 'getUserIds',
                              },
                              default: '',
                              description: 'ID of the User this deal will be associated with. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code-examples/expressions/">expression</a>.',
                          },
                      ],
                  },
                  {
                      displayName: 'Person ID',
                      name: 'personId',
                      type: 'number',
                      displayOptions: {
                          show: {
                              operation: ['delete'],
                              resource: ['person'],
                          },
                      },
                      default: 0,
                      required: true,
                      description: 'ID of the person to delete',
                  },
                  {
                      displayName: 'Person ID',
                      name: 'personId',
                      type: 'number',
                      displayOptions: {
                          show: {
                              operation: ['get'],
                              resource: ['person'],
                          },
                      },
                      default: 0,
                      required: true,
                      description: 'ID of the person to get',
                  },
                  {
                      displayName: 'Person ID',
                      name: 'personId',
                      type: 'number',
                      displayOptions: {
                          show: {
                              operation: ['update'],
                              resource: ['person'],
                          },
                      },
                      default: 0,
                      required: true,
                      description: 'ID of the person to update',
                  },
                  {
                      displayName: 'Update Fields',
                      name: 'updateFields',
                      type: 'collection',
                      description: 'The fields to update',
                      placeholder: 'Add Field',
                      displayOptions: {
                          show: {
                              operation: ['update'],
                              resource: ['person'],
                          },
                      },
                      default: {},
                      options: [
                          {
                              displayName: 'Custom Properties',
                              name: 'customProperties',
                              placeholder: 'Add Custom Property',
                              description: 'Adds a custom property to set also values which have not been predefined',
                              type: 'fixedCollection',
                              typeOptions: {
                                  multipleValues: true,
                              },
                              default: {},
                              options: [
                                  {
                                      name: 'property',
                                      displayName: 'Property',
                                      values: [
                                          {
                                              displayName: 'Property Name or ID',
                                              name: 'name',
                                              type: 'options',
                                              typeOptions: {
                                                  loadOptionsMethod: 'getPersonCustomFields',
                                              },
                                              default: '',
                                              description: 'Name of the custom field to set. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code-examples/expressions/">expression</a>.',
                                          },
                                          {
                                              displayName: 'Property Value',
                                              name: 'value',
                                              type: 'string',
                                              default: '',
                                              description: 'Value of the property to set',
                                          },
                                      ],
                                  },
                              ],
                          },
                          {
                              displayName: 'Email',
                              name: 'email',
                              type: 'string',
                              placeholder: 'name@email.com',
                              typeOptions: {
                                  multipleValues: true,
                              },
                              default: '',
                              description: 'Email of the person',
                          },
                          {
                              displayName: 'Label Name or ID',
                              name: 'label',
                              type: 'options',
                              description: 'Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code-examples/expressions/">expression</a>',
                              typeOptions: {
                                  loadOptionsMethod: 'getPersonLabels',
                              },
                              default: '',
                          },
                          {
                              displayName: 'Marketing Status',
                              name: 'marketing_status',
                              type: 'options',
                              options: [
                                  {
                                      name: 'No Consent',
                                      value: 'no_consent',
                                  },
                                  {
                                      name: 'Unsubscribed',
                                      value: 'unsubscribed',
                                  },
                                  {
                                      name: 'Subscribed',
                                      value: 'subscribed',
                                  },
                                  {
                                      name: 'Archived',
                                      value: 'archived',
                                  },
                              ],
                              default: 'subscribed',
                              description: 'Please be aware that it is only allowed once to change the marketing status from an old status to a new one',
                          },
                          {
                              displayName: 'Name',
                              name: 'name',
                              type: 'string',
                              default: '',
                              description: 'The name of the person',
                          },
                          {
                              displayName: 'Organization Name or ID',
                              name: 'org_id',
                              type: 'options',
                              typeOptions: {
                                  loadOptionsMethod: 'getOrganizationIds',
                              },
                              default: '',
                              description: 'ID of the organization this deal will be associated with. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code-examples/expressions/">expression</a>.',
                          },
                          {
                              displayName: 'Phone',
                              name: 'phone',
                              type: 'string',
                              typeOptions: {
                                  multipleValues: true,
                              },
                              default: '',
                              description: 'Phone number of the person',
                          },
                          {
                              displayName: 'User Name or ID',
                              name: 'owner_id',
                              type: 'options',
                              typeOptions: {
                                  loadOptionsMethod: 'getUserIds',
                              },
                              default: '',
                              description: 'ID of the User this person will be associated with. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code-examples/expressions/">expression</a>.',
                          },
                          {
                              displayName: 'Visible To',
                              name: 'visible_to',
                              type: 'options',
                              options: [
                                  {
                                      name: 'Owner & Followers (Private)',
                                      value: '1',
                                  },
                                  {
                                      name: 'Entire Company (Shared)',
                                      value: '3',
                                  },
                              ],
                              default: '3',
                              description: 'Visibility of the deal. If omitted, visibility will be set to the default visibility setting of this item type for the authorized user.',
                          },
                      ],
                  },
                  {
                      displayName: 'Resolve Properties',
                      name: 'resolveProperties',
                      type: 'boolean',
                      displayOptions: {
                          show: {
                              resource: ['activity', 'deal', 'organization', 'person', 'product'],
                              operation: ['get', 'getAll'],
                          },
                      },
                      default: false,
                      description: 'By default do custom properties get returned only as ID instead of their actual name. Also option fields contain only the ID instead of their actual value. If this option gets set they get automatically resolved.',
                  },
                  {
                      displayName: 'Encode Properties',
                      name: 'encodeProperties',
                      type: 'boolean',
                      displayOptions: {
                          show: {
                              resource: ['activity', 'deal', 'organization', 'person', 'product'],
                              operation: ['update'],
                          },
                      },
                      default: false,
                      description: 'By default do custom properties have to be set as ID instead of their actual name. Also option fields have to be set as ID instead of their actual value. If this option gets set they get automatically encoded.',
                  },
                  {
                      displayName: 'Return All',
                      name: 'returnAll',
                      type: 'boolean',
                      displayOptions: {
                          show: {
                              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: {
                              operation: ['getAll'],
                              returnAll: [false],
                          },
                      },
                      typeOptions: {
                          minValue: 1,
                          maxValue: 500,
                      },
                      default: 100,
                      description: 'Max number of results to return',
                  },
                  {
                      displayName: 'Deal Name or ID',
                      name: 'dealId',
                      type: 'options',
                      default: '',
                      typeOptions: {
                          loadOptionsMethod: 'getDeals',
                      },
                      required: true,
                      displayOptions: {
                          show: {
                              operation: ['getAll'],
                              resource: ['dealActivity'],
                          },
                      },
                      description: 'The ID of the deal whose activity to retrieve. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code-examples/expressions/">expression</a>.',
                  },
                  {
                      displayName: 'Additional Fields',
                      name: 'additionalFields',
                      type: 'collection',
                      placeholder: 'Add Field',
                      displayOptions: {
                          show: {
                              operation: ['getAll'],
                              resource: ['dealActivity'],
                          },
                      },
                      default: {},
                      options: [
                          {
                              displayName: 'Done',
                              name: 'done',
                              type: 'boolean',
                              default: false,
                              description: 'Whether the activity is done or not',
                          },
                          {
                              displayName: 'Exclude Activity IDs',
                              name: 'exclude',
                              type: 'string',
                              default: '',
                              description: 'A comma-separated Activity IDs, to exclude from result. Ex. 4, 9, 11, ...',
                          },
                      ],
                  },
                  {
                      displayName: 'Filters',
                      name: 'filters',
                      type: 'collection',
                      placeholder: 'Add Filter',
                      default: {},
                      displayOptions: {
                          show: {
                              resource: ['lead'],
                              operation: ['getAll'],
                          },
                      },
                      options: [
                          {
                              displayName: 'Archived Status',
                              name: 'archived_status',
                              type: 'options',
                              default: 'all',
                              options: [
                                  {
                                      name: 'Archived',
                                      value: 'archived',
                                  },
                                  {
                                      name: 'All',
                                      value: 'all',
                                  },
                                  {
                                      name: 'Not Archived',
                                      value: 'not_archived',
                                  },
                              ],
                          },
                      ],
                  },
                  {
                      displayName: 'Filters',
                      name: 'filters',
                      type: 'collection',
                      placeholder: 'Add Field',
                      displayOptions: {
                          show: {
                              operation: ['getAll'],
                              resource: ['organization'],
                          },
                      },
                      default: {},
                      options: [
                          {
                              displayName: 'First Char',
                              name: 'firstChar',
                              type: 'string',
                              default: '',
                              description: 'If supplied, only organizations whose name starts with the specified letter will be returned',
                          },
                          {
                              displayName: 'Predefined Filter Name or ID',
                              name: 'filterId',
                              type: 'options',
                              typeOptions: {
                                  loadOptionsMethod: 'getFilters',
                              },
                              default: '',
                              description: 'ID of the filter to use. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code-examples/expressions/">expression</a>.',
                          },
                      ],
                  },
                  {
                      displayName: 'Additional Fields',
                      name: 'additionalFields',
                      type: 'collection',
                      placeholder: 'Add Field',
                      displayOptions: {
                          show: {
                              operation: ['getAll'],
                              resource: ['person'],
                          },
                      },
                      default: {},
                      options: [
                          {
                              displayName: 'Predefined Filter Name or ID',
                              name: 'filterId',
                              type: 'options',
                              typeOptions: {
                                  loadOptionsMethod: 'getFilters',
                              },
                              default: '',
                              description: 'ID of the filter to use. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code-examples/expressions/">expression</a>.',
                          },
                          {
                              displayName: 'First Char',
                              name: 'firstChar',
                              type: 'string',
                              default: '',
                              description: 'If supplied, only persons whose name starts with the specified letter will be returned',
                          },
                      ],
                  },
                  {
                      displayName: 'Term',
                      name: 'term',
                      type: 'string',
                      required: true,
                      displayOptions: {
                          show: {
                              operation: ['search'],
                              resource: ['person'],
                          },
                      },
                      default: '',
                      description: 'The search term to look for. Minimum 2 characters (or 1 if using exact_match).',
                  },
                  {
                      displayName: 'Additional Fields',
                      name: 'additionalFields',
                      type: 'collection',
                      placeholder: 'Add Field',
                      displayOptions: {
                          show: {
                              operation: ['search'],
                              resource: ['person'],
                          },
                      },
                      default: {},
                      options: [
                          {
                              displayName: 'Exact Match',
                              name: 'exactMatch',
                              type: 'boolean',
                              default: false,
                              description: 'Whether only full exact matches against the given term are returned. It is not case sensitive.',
                          },
                          {
                              displayName: 'Fields',
                              name: 'fields',
                              type: 'string',
                              default: '',
                              description: 'A comma-separated string array. The fields to perform the search from. Defaults to all of them.',
                          },
                          {
                              displayName: 'Include Fields',
                              name: 'includeFields',
                              type: 'string',
                              default: '',
                              description: 'Supports including optional fields in the results which are not provided by default',
                          },
                          {
                              displayName: 'Organization ID',
                              name: 'organizationId',
                              type: 'string',
                              default: '',
                              description: 'Will filter Deals by the provided Organization ID',
                          },
                          {
                              displayName: 'RAW Data',
                              name: 'rawData',
                              type: 'boolean',
                              default: false,
                              description: 'Whether to return the data exactly in the way it got received from the API',
                          },
                      ],
                  },
                  {
                      displayName: 'Additional Fields',
                      name: 'additionalFields',
                      type: 'collection',
                      placeholder: 'Add Field',
                      displayOptions: {
                          show: {
                              operation: ['create', 'getAll'],
                              resource: ['note'],
                          },
                      },
                      default: {},
                      options: [
                          {
                              displayName: 'Deal ID',
                              name: 'deal_id',
                              type: 'number',
                              default: 0,
                              description: 'ID of the deal this note will be associated with',
                          },
                          {
                              displayName: 'Lead ID',
                              name: 'lead_id',
                              type: 'number',
                              default: 0,
                              description: 'ID of the lead this note will be associated with',
                          },
                          {
                              displayName: 'Organization Name or ID',
                              name: 'org_id',
                              type: 'options',
                              typeOptions: {
                                  loadOptionsMethod: 'getOrganizationIds',
                              },
                              default: '',
                              description: 'ID of the organization this deal will be associated with. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code-examples/expressions/">expression</a>.',
                          },
                          {
                              displayName: 'Person ID',
                              name: 'person_id',
                              type: 'number',
                              default: 0,
                              description: 'ID of the person this note will be associated with',
                          },
                      ],
                  },
                  {
                      displayName: 'Additional Fields',
                      name: 'additionalFields',
                      type: 'collection',
                      placeholder: 'Add Field',
                      displayOptions: {
                          show: {
                              operation: ['getAll'],
                              resource: ['activity'],
                          },
                      },
                      default: {},
                      options: [
                          {
                              displayName: 'Done',
                              name: 'done',
                              type: 'boolean',
                              default: false,
                              description: 'Whether the Activity is done or not. 0 = Not done, 1 = Done. If omitted returns both Done and Not done activities.',
                          },
                          {
                              displayName: 'End Date',
                              name: 'end_date',
                              type: 'dateTime',
                              default: '',
                              description: 'Use the Activity due date where you wish to stop fetching Activities from. Insert due date in YYYY-MM-DD format.',
                          },
                          {
                              displayName: 'Predefined Filter Name or ID',
                              name: 'filterId',
                              type: 'options',
                              typeOptions: {
                                  loadOptionsMethod: 'getFilters',
                              },
                              default: '',
                              description: 'The ID of the Filter to use (will narrow down results if used together with user_id parameter). Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code-examples/expressions/">expression</a>.',
                          },
                          {
                              displayName: 'Star Date',
                              name: 'start_date',
                              type: 'dateTime',
                              default: '',
                              description: 'Use the Activity due date where you wish to begin fetching Activities from. Insert due date in YYYY-MM-DD format.',
                          },
                          {
                              displayName: 'Type Names or IDs',
                              name: 'type',
                              type: 'multiOptions',
                              typeOptions: {
                                  loadOptionsMethod: 'getActivityTypes',
                              },
                              default: [],
                              description: 'Type of the Activity. Choose from the list, or specify IDs using an <a href="https://docs.n8n.io/code-examples/expressions/">expression</a>.',
                          },
                          {
                              displayName: 'User Name or ID',
                              name: 'user_id',
                              type: 'options',
                              typeOptions: {
                                  loadOptionsMethod: 'getUserIds',
                              },
                              default: '',
                              description: 'The ID of the User whose Activities will be fetched. If omitted, the User associated with the API token will be used. If 0, Activities for all company Users will be fetched based on the permission sets. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code-examples/expressions/">expression</a>.',
                          },
                      ],
                  },
                  {
                      displayName: 'Filters',
                      name: 'filters',
                      type: 'collection',
                      placeholder: 'Add Filter',
                      displayOptions: {
                          show: {
                              operation: ['getAll'],
                              resource: ['deal'],
                          },
                      },
                      default: {},
                      options: [
                          {
                              displayName: 'Predefined Filter Name or ID',
                              name: 'filter_id',
                              type: 'options',
                              typeOptions: {
                                  loadOptionsMethod: 'getFilters',
                              },
                              default: '',
                              description: 'Predefined filter to apply to the deals to retrieve. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code-examples/expressions/">expression</a>.',
                          },
                          {
                              displayName: 'Stage Name or ID',
                              name: 'stage_id',
                              type: 'options',
                              typeOptions: {
                                  loadOptionsMethod: 'getStageIds',
                              },
                              default: '',
                              description: 'ID of the stage to filter deals by. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code-examples/expressions/">expression</a>.',
                          },
                          {
                              displayName: 'Status',
                              name: 'status',
                              type: 'options',
                              options: [
                                  {
                                      name: 'All Not Deleted',
                                      value: 'all_not_deleted',
                                  },
                                  {
                                      name: 'Deleted',
                                      value: 'deleted',
                                  },
                                  {
                                      name: 'Lost',
                                      value: 'lost',
                                  },
                                  {
                                      name: 'Open',
                                      value: 'open',
                                  },
                                  {
                                      name: 'Won',
                                      value: 'won',
                                  },
                              ],
                              default: 'all_not_deleted',
                              description: 'Status to filter deals by. Defaults to <code>all_not_deleted</code>',
                          },
                          {
                              displayName: 'User Name or ID',
                              name: 'user_id',
                              type: 'options',
                              typeOptions: {
                                  loadOptionsMethod: 'getUserIds',
                              },
                              default: '',
                              description: 'ID of the user to filter deals by. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code-examples/expressions/">expression</a>.',
                          },
                      ],
                  },
              ],
          };
          this.methods = {
              loadOptions: {
                  async getActivityTypes() {
                      const returnData = [];
                      const { data } = await GenericFunctions_1.pipedriveApiRequest.call(this, 'GET', '/activityTypes', {});
                      for (const activity of data) {
                          returnData.push({
                              name: activity.name,
                              value: activity.key_string,
                          });
                      }
                      return (0, GenericFunctions_1.sortOptionParameters)(returnData);
                  },
                  async getFilters() {
                      const returnData = [];
                      const resource = this.getNodeParameter('resource');
                      const type = {
                          deal: 'deals',
                          activity: 'activity',
                          person: 'people',
                          organization: 'org',
                      };
                      const { data } = await GenericFunctions_1.pipedriveApiRequest.call(this, 'GET', '/filters', {}, { type: type[resource] });
                      for (const filter of data) {
                          returnData.push({
                              name: filter.name,
                              value: filter.id,
                          });
                      }
                      return (0, GenericFunctions_1.sortOptionParameters)(returnData);
                  },
                  async getOrganizationIds() {
                      const returnData = [];
                      const { data } = await GenericFunctions_1.pipedriveApiRequest.call(this, 'GET', '/organizations', {});
                      for (const org of data) {
                          returnData.push({
                              name: org.name,
                              value: org.id,
                          });
                      }
                      return (0, GenericFunctions_1.sortOptionParameters)(returnData);
                  },
                  async getUserIds() {
                      const returnData = [];
                      const resource = this.getCurrentNodeParameter('resource');
                      const { data } = await GenericFunctions_1.pipedriveApiRequest.call(this, 'GET', '/users', {});
                      for (const user of data) {
                          if (user.active_flag === true) {
                              returnData.push({
                                  name: user.name,
                                  value: user.id,
                              });
                          }
                      }
                      if (resource === 'activity') {
                          returnData.push({
                              name: 'All Users',
                              value: 0,
                          });
                      }
                      return (0, GenericFunctions_1.sortOptionParameters)(returnData);
                  },
                  async getDeals() {
                      const { data } = (await GenericFunctions_1.pipedriveApiRequest.call(this, 'GET', '/deals', {}));
                      return (0, GenericFunctions_1.sortOptionParameters)(data.map(({ id, title }) => ({ value: id, name: title })));
                  },
                  async getProducts() {
                      const { data } = (await GenericFunctions_1.pipedriveApiRequest.call(this, 'GET', '/products', {}));
                      return (0, GenericFunctions_1.sortOptionParameters)(data.map(({ id, name }) => ({ value: id, name })));
                  },
                  async getProductsDeal() {
                      const dealId = this.getCurrentNodeParameter('dealId');
                      const { data } = (await GenericFunctions_1.pipedriveApiRequest.call(this, 'GET', `/deals/${dealId}/products`, {}));
                      return (0, GenericFunctions_1.sortOptionParameters)(data.map(({ id, name }) => ({ value: id, name })));
                  },
                  async getStageIds() {
                      const returnData = [];
                      const { data } = await GenericFunctions_1.pipedriveApiRequest.call(this, 'GET', '/stages', {});
                      for (const stage of data) {
                          returnData.push({
                              name: `${stage.pipeline_name} > ${stage.name}`,
                              value: stage.id,
                          });
                      }
                      return (0, GenericFunctions_1.sortOptionParameters)(returnData);
                  },
                  async getOrganizationCustomFields() {
                      const returnData = [];
                      const { data } = await GenericFunctions_1.pipedriveApiRequest.call(this, 'GET', '/organizationFields', {});
                      for (const field of data) {
                          if (field.key.length === 40) {
                              returnData.push({
                                  name: field.name,
                                  value: field.key,
                              });
                          }
                      }
                      return (0, GenericFunctions_1.sortOptionParameters)(returnData);
                  },
                  async getDealCustomFields() {
                      const returnData = [];
                      const { data } = await GenericFunctions_1.pipedriveApiRequest.call(this, 'GET', '/dealFields', {});
                      for (const field of data) {
                          if (field.key.length === 40) {
                              returnData.push({
                                  name: field.name,
                                  value: field.key,
                              });
                          }
                      }
                      return (0, GenericFunctions_1.sortOptionParameters)(returnData);
                  },
                  async getPersonCustomFields() {
                      const returnData = [];
                      const { data } = await GenericFunctions_1.pipedriveApiRequest.call(this, 'GET', '/personFields', {});
                      for (const field of data) {
                          if (field.key.length === 40) {
                              returnData.push({
                                  name: field.name,
                                  value: field.key,
                              });
                          }
                      }
                      return (0, GenericFunctions_1.sortOptionParameters)(returnData);
                  },
                  async getPersonLabels() {
                      const returnData = [];
                      const operation = this.getCurrentNodeParameter('operation');
                      const { data } = await GenericFunctions_1.pipedriveApiRequest.call(this, 'GET', '/personFields', {});
                      for (const field of data) {
                          if (field.key === 'label') {
                              if (field.options) {
                                  for (const option of field.options) {
                                      returnData.push({
                                          name: option.label,
                                          value: option.id,
                                      });
                                  }
                              }
                          }
                      }
                      (0, GenericFunctions_1.sortOptionParameters)(returnData);
                      if (operation === 'update') {
                          returnData.push({
                              name: 'No Label',
                              value: 'null',
                          });
                      }
                      return returnData;
                  },
                  async getOrganizationLabels() {
                      const returnData = [];
                      const operation = this.getCurrentNodeParameter('operation');
                      const { data } = await GenericFunctions_1.pipedriveApiRequest.call(this, 'GET', '/organizationFields', {});
                      for (const field of data) {
                          if (field.key === 'label') {
                              if (field.options) {
                                  for (const option of field.options) {
                                      returnData.push({
                                          name: option.label,
                                          value: option.id,
                                      });
                                  }
                              }
                          }
                      }
                      (0, GenericFunctions_1.sortOptionParameters)(returnData);
                      if (operation === 'update') {
                          returnData.push({
                              name: 'No Label',
                              value: 'null',
                          });
                      }
                      return returnData;
                  },
                  async getPersons() {
                      const { data } = (await GenericFunctions_1.pipedriveApiRequest.call(this, 'GET', '/persons', {}));
                      return (0, GenericFunctions_1.sortOptionParameters)(data.map(({ id, name }) => ({ value: id, name })));
                  },
                  async getLeadLabels() {
                      const { data } = (await GenericFunctions_1.pipedriveApiRequest.call(this, 'GET', '/leadLabels', {}));
                      return (0, GenericFunctions_1.sortOptionParameters)(data.map(({ id, name }) => ({ value: id, name })));
                  },
                  async getDealLabels() {
                      const returnData = [];
                      const operation = this.getCurrentNodeParameter('operation');
                      const { data } = await GenericFunctions_1.pipedriveApiRequest.call(this, 'GET', '/dealFields', {});
                      for (const field of data) {
                          if (field.key === 'label') {
                              if (field.options) {
                                  for (const option of field.options) {
                                      returnData.push({
                                          name: option.label,
                                          value: option.id,
                                      });
                                  }
                              }
                          }
                      }
                      (0, GenericFunctions_1.sortOptionParameters)(returnData);
                      if (operation === 'update') {
                          returnData.push({
                              name: 'No Label',
                              value: 'null',
                          });
                      }
                      return returnData;
                  },
              },
          };
      }
      async execute() {
          var _a, _b;
          const items = this.getInputData();
          const returnData = [];
          let body;
          let formData;
          let qs;
          let downloadFile;
          let requestMethod;
          let endpoint;
          let returnAll = false;
          const resource = this.getNodeParameter('resource', 0);
          const operation = this.getNodeParameter('operation', 0);
          let customProperties;
          if (['get', 'getAll', 'update'].includes(operation) &&
              ['activity', 'deal', 'organization', 'person', 'product'].includes(resource)) {
              let getCustomProperties = false;
              if (['update'].includes(operation)) {
                  getCustomProperties = this.getNodeParameter('encodeProperties', 0, false);
              }
              else {
                  getCustomProperties = this.getNodeParameter('resolveProperties', 0, false);
              }
              if (getCustomProperties) {
                  customProperties = await GenericFunctions_1.pipedriveGetCustomProperties.call(this, resource);
              }
          }
          for (let i = 0; i < items.length; i++) {
              requestMethod = 'GET';
              endpoint = '';
              downloadFile = false;
              body = {};
              formData = {};
              qs = {};
              try {
                  if (resource === 'activity') {
                      if (operation === 'create') {
                          requestMethod = 'POST';
                          endpoint = '/activities';
                          body.subject = this.getNodeParameter('subject', i);
                          body.done = this.getNodeParameter('done', i);
                          body.type = this.getNodeParameter('type', i);
                          const additionalFields = this.getNodeParameter('additionalFields', i);
                          addAdditionalFields(body, additionalFields);
                      }
                      else if (operation === 'delete') {
                          requestMethod = 'DELETE';
                          const activityId = this.getNodeParameter('activityId', i);
                          endpoint = `/activities/${activityId}`;
                      }
                      else if (operation === 'get') {
                          requestMethod = 'GET';
                          const activityId = this.getNodeParameter('activityId', i);
                          endpoint = `/activities/${activityId}`;
                      }
                      else if (operation === 'getAll') {
                          requestMethod = 'GET';
                          returnAll = this.getNodeParameter('returnAll', i);
                          if (!returnAll) {
                              qs.limit = this.getNodeParameter('limit', i);
                          }
                          const additionalFields = this.getNodeParameter('additionalFields', i);
                          addAdditionalFields(qs, additionalFields);
                          if (qs.filterId) {
                              qs.filter_id = qs.filterId;
                              delete qs.filterId;
                          }
                          if (qs.type) {
                              qs.type = qs.type.join(',');
                          }
                          endpoint = '/activities';
                      }
                      else if (operation === 'update') {
                          requestMethod = 'PUT';
                          const activityId = this.getNodeParameter('activityId', i);
                          endpoint = `/activities/${activityId}`;
                          const updateFields = this.getNodeParameter('updateFields', i);
                          addAdditionalFields(body, updateFields);
                      }
                  }
                  else if (resource === 'deal') {
                      if (operation === 'create') {
                          requestMethod = 'POST';
                          endpoint = '/deals';
                          body.title = this.getNodeParameter('title', i);
                          const associateWith = this.getNodeParameter('associateWith', i);
                          if (associateWith === 'organization') {
                              body.org_id = this.getNodeParameter('org_id', i);
                          }
                          else {
                              body.person_id = this.getNodeParameter('person_id', i);
                          }
                          const additionalFields = this.getNodeParameter('additionalFields', i);
                          addAdditionalFields(body, additionalFields);
                      }
                      else if (operation === 'delete') {
                          requestMethod = 'DELETE';
                          const dealId = this.getNodeParameter('dealId', i);
                          endpoint = `/deals/${dealId}`;
                      }
                      else if (operation === 'duplicate') {
                          requestMethod = 'POST';
                          const dealId = this.getNodeParameter('dealId', i);
                          endpoint = `/deals/${dealId}/duplicate`;
                      }
                      else if (operation === 'get') {
                          requestMethod = 'GET';
                          const dealId = this.getNodeParameter('dealId', i);
                          endpoint = `/deals/${dealId}`;
                      }
                      else if (operation === 'getAll') {
                          requestMethod = 'GET';
                          returnAll = this.getNodeParameter('returnAll', i);
                          if (!returnAll) {
                              qs.limit = this.getNodeParameter('limit', i);
                          }
                          const filters = this.getNodeParameter('filters', i);
                          addAdditionalFields(qs, filters);
                          endpoint = '/deals';
                      }
                      else if (operation === 'update') {
                          requestMethod = 'PUT';
                          const dealId = this.getNodeParameter('dealId', i);
                          endpoint = `/deals/${dealId}`;
                          const updateFields = this.getNodeParameter('updateFields', i);
                          addAdditionalFields(body, updateFields);
                          if (body.label === 'null') {
                              body.label = null;
                          }
                      }
                      else if (operation === 'search') {
                          requestMethod = 'GET';
                          qs.term = this.getNodeParameter('term', i);
                          returnAll = this.getNodeParameter('returnAll', i);
                          qs.exact_match = this.getNodeParameter('exactMatch', i);
                          if (!returnAll) {
                              qs.limit = this.getNodeParameter('limit', i);
                          }
                          const additionalFields = this.getNodeParameter('additionalFields', i);
                          if (additionalFields.fields) {
                              qs.fields = additionalFields.fields.join(',');
                          }
                          if (additionalFields.organizationId) {
                              qs.organization_id = parseInt(additionalFields.organizationId, 10);
                          }
                          if (additionalFields.includeFields) {
                              qs.include_fields = additionalFields.includeFields;
                          }
                          if (additionalFields.personId) {
                              qs.person_id = parseInt(additionalFields.personId, 10);
                          }
                          if (additionalFields.status) {
                              qs.status = additionalFields.status;
                          }
                          endpoint = '/deals/search';
                      }
                  }
                  else if (resource === 'dealActivity') {
                      if (operation === 'getAll') {
                          requestMethod = 'GET';
                          const dealId = this.getNodeParameter('dealId', i);
                          returnAll = this.getNodeParameter('returnAll', i);
                          if (!returnAll) {
                              qs.limit = this.getNodeParameter('limit', i);
                          }
                          const additionalFields = this.getNodeParameter('additionalFields', i);
                          if (additionalFields.exclude) {
                              qs.exclude = additionalFields.exclude;
                          }
                          if ((additionalFields === null || additionalFields === void 0 ? void 0 : additionalFields.done) !== undefined) {
                              qs.done = additionalFields.done === true ? 1 : 0;
                          }
                          endpoint = `/deals/${dealId}/activities`;
                      }
                  }
                  else if (resource === 'dealProduct') {
                      if (operation === 'add') {
                          requestMethod = 'POST';
                          const dealId = this.getNodeParameter('dealId', i);
                          endpoint = `/deals/${dealId}/products`;
                          body.product_id = this.getNodeParameter('productId', i);
                          body.item_price = this.getNodeParameter('item_price', i);
                          body.quantity = this.getNodeParameter('quantity', i);
                          const additionalFields = this.getNodeParameter('additionalFields', i);
                          addAdditionalFields(body, additionalFields);
                      }
                      else if (operation === 'getAll') {
                          requestMethod = 'GET';
                          const dealId = this.getNodeParameter('dealId', i);
                          endpoint = `/deals/${dealId}/products`;
                      }
                      else if (operation === 'remove') {
                          requestMethod = 'DELETE';
                          const dealId = this.getNodeParameter('dealId', i);
                          const productAttachmentId = this.getNodeParameter('productAttachmentId', i);
                          endpoint = `/deals/${dealId}/products/${productAttachmentId}`;
                      }
                      else if (operation === 'update') {
                          requestMethod = 'PUT';
                          const dealId = this.getNodeParameter('dealId', i);
                          const productAttachmentId = this.getNodeParameter('productAttachmentId', i);
                          endpoint = `/deals/${dealId}/products/${productAttachmentId}`;
                          const updateFields = this.getNodeParameter('updateFields', i);
                          addAdditionalFields(body, updateFields);
                      }
                  }
                  else if (resource === 'file') {
                      if (operation === 'create') {
                          requestMethod = 'POST';
                          endpoint = '/files';
                          const binaryPropertyName = this.getNodeParameter('binaryPropertyName', i);
                          const binaryData = this.helpers.assertBinaryData(i, binaryPropertyName);
                          const fileBufferData = await this.helpers.getBinaryDataBuffer(i, binaryPropertyName);
                          formData.file = {
                              value: fileBufferData,
                              options: {
                                  contentType: binaryData.mimeType,
                                  filename: binaryData.fileName,
                              },
                          };
                          const additionalFields = this.getNodeParameter('additionalFields', i);
                          addAdditionalFields(formData, additionalFields);
                      }
                      else if (operation === 'delete') {
                          requestMethod = 'DELETE';
                          const fileId = this.getNodeParameter('fileId', i);
                          endpoint = `/files/${fileId}`;
                      }
                      else if (operation === 'download') {
                          requestMethod = 'GET';
                          downloadFile = true;
                          const fileId = this.getNodeParameter('fileId', i);
                          endpoint = `/files/${fileId}/download`;
                      }
                      else if (operation === 'get') {
                          requestMethod = 'GET';
                          const fileId = this.getNodeParameter('fileId', i);
                          endpoint = `/files/${fileId}`;
                      }
                      else if (operation === 'update') {
                          requestMethod = 'PUT';
                          const fileId = this.getNodeParameter('fileId', i);
                          const updateFields = this.getNodeParameter('updateFields', i);
                          endpoint = `/files/${fileId}`;
                          addAdditionalFields(body, updateFields);
                      }
                  }
                  else if (resource === 'note') {
                      if (operation === 'create') {
                          requestMethod = 'POST';
                          endpoint = '/notes';
                          body.content = this.getNodeParameter('content', i);
                          const additionalFields = this.getNodeParameter('additionalFields', i);
                          addAdditionalFields(body, additionalFields);
                      }
                      else if (operation === 'delete') {
                          requestMethod = 'DELETE';
                          const noteId = this.getNodeParameter('noteId', i);
                          endpoint = `/notes/${noteId}`;
                      }
                      else if (operation === 'get') {
                          requestMethod = 'GET';
                          const noteId = this.getNodeParameter('noteId', i);
                          endpoint = `/notes/${noteId}`;
                      }
                      else if (operation === 'getAll') {
                          requestMethod = 'GET';
                          endpoint = '/notes';
                          returnAll = this.getNodeParameter('returnAll', i);
                          if (!returnAll) {
                              qs.limit = this.getNodeParameter('limit', i);
                          }
                          const additionalFields = this.getNodeParameter('additionalFields', i);
                          addAdditionalFields(qs, additionalFields);
                      }
                      else if (operation === 'update') {
                          requestMethod = 'PUT';
                          const noteId = this.getNodeParameter('noteId', i);
                          endpoint = `/notes/${noteId}`;
                          const updateFields = this.getNodeParameter('updateFields', i);
                          addAdditionalFields(body, updateFields);
                      }
                  }
                  else if (resource === 'lead') {
                      if (operation === 'create') {
                          body = {
                              title: this.getNodeParameter('title', i),
                          };
                          const associateWith = this.getNodeParameter('associateWith', i);
                          if (associateWith === 'organization') {
                              body.organization_id = this.getNodeParameter('organization_id', i);
                          }
                          else {
                              body.person_id = this.getNodeParameter('person_id', i);
                          }
                          const { value, expected_close_date, ...rest } = this.getNodeParameter('additionalFields', i);
                          if (Object.keys(rest).length) {
                              Object.assign(body, rest);
                          }
                          if (value) {
                              Object.assign(body, { value: value.valueProperties });
                          }
                          if (expected_close_date) {
                              body.expected_close_date = expected_close_date.split('T')[0];
                          }
                          requestMethod = 'POST';
                          endpoint = '/leads';
                      }
                      else if (operation === 'delete') {
                          const leadId = this.getNodeParameter('leadId', i);
                          requestMethod = 'DELETE';
                          endpoint = `/leads/${leadId}`;
                      }
                      else if (operation === 'get') {
                          const leadId = this.getNodeParameter('leadId', i);
                          requestMethod = 'GET';
                          endpoint = `/leads/${leadId}`;
                      }
                      else if (operation === 'getAll') {
                          returnAll = this.getNodeParameter('returnAll', i);
                          if (!returnAll) {
                              qs.limit = this.getNodeParameter('limit', i);
                          }
                          const filters = this.getNodeParameter('filters', i);
                          if (Object.keys(filters).length) {
                              Object.assign(qs, filters);
                          }
                          requestMethod = 'GET';
                          endpoint = '/leads';
                      }
                      else if (operation === 'update') {
                          const { value, expected_close_date, ...rest } = this.getNodeParameter('updateFields', i);
                          if (Object.keys(rest).length) {
                              Object.assign(body, rest);
                          }
                          if (value) {
                              Object.assign(body, { value: value.valueProperties });
                          }
                          if (expected_close_date) {
                              body.expected_close_date = expected_close_date.split('T')[0];
                          }
                          if (Object.keys(rest).length) {
                              Object.assign(body, rest);
                          }
                          const leadId = this.getNodeParameter('leadId', i);
                          requestMethod = 'PATCH';
                          endpoint = `/leads/${leadId}`;
                      }
                  }
                  else if (resource === 'organization') {
                      if (operation === 'create') {
                          requestMethod = 'POST';
                          endpoint = '/organizations';
                          body.name = this.getNodeParameter('name', i);
                          const additionalFields = this.getNodeParameter('additionalFields', i);
                          addAdditionalFields(body, additionalFields);
                      }
                      else if (operation === 'delete') {
                          requestMethod = 'DELETE';
                          const organizationId = this.getNodeParameter('organizationId', i);
                          endpoint = `/organizations/${organizationId}`;
                      }
                      else if (operation === 'get') {
                          requestMethod = 'GET';
                          const organizationId = this.getNodeParameter('organizationId', i);
                          endpoint = `/organizations/${organizationId}`;
                      }
                      else if (operation === 'getAll') {
                          requestMethod = 'GET';
                          returnAll = this.getNodeParameter('returnAll', i);
                          if (!returnAll) {
                              qs.limit = this.getNodeParameter('limit', i);
                          }
                          const filters = this.getNodeParameter('filters', i);
                          if (filters.filterId) {
                              qs.filter_id = filters.filterId;
                          }
                          if (filters.firstChar) {
                              qs.first_char = filters.firstChar;
                              qs.first_char = qs.first_char.substring(0, 1);
                          }
                          endpoint = '/organizations';
                      }
                      else if (operation === 'update') {
                          const id = this.getNodeParameter('organizationId', i);
                          requestMethod = 'PUT';
                          endpoint = `/organizations/${id}`;
                          const updateFields = this.getNodeParameter('updateFields', i);
                          addAdditionalFields(body, updateFields);
                          if (body.label === 'null') {
                              body.label = null;
                          }
                      }
                      else if (operation === 'search') {
                          requestMethod = 'GET';
                          qs.term = this.getNodeParameter('term', i);
                          returnAll = this.getNodeParameter('returnAll', i);
                          if (!returnAll) {
                              qs.limit = this.getNodeParameter('limit', i);
                          }
                          const additionalFields = this.getNodeParameter('additionalFields', i);
                          if ((_a = additionalFields === null || additionalFields === void 0 ? void 0 : additionalFields.fields) === null || _a === void 0 ? void 0 : _a.length) {
                              qs.fields = additionalFields.fields.join(',');
                          }
                          if (additionalFields.exactMatch) {
                              qs.exact_match = additionalFields.exactMatch;
                          }
                          endpoint = '/organizations/search';
                      }
                  }
                  else if (resource === 'person') {
                      if (operation === 'create') {
                          requestMethod = 'POST';
                          endpoint = '/persons';
                          body.name = this.getNodeParameter('name', i);
                          const additionalFields = this.getNodeParameter('additionalFields', i);
                          addAdditionalFields(body, additionalFields);
                      }
                      else if (operation === 'delete') {
                          requestMethod = 'DELETE';
                          const personId = this.getNodeParameter('personId', i);
                          endpoint = `/persons/${personId}`;
                      }
                      else if (operation === 'get') {
                          requestMethod = 'GET';
                          const personId = this.getNodeParameter('personId', i);
                          endpoint = `/persons/${personId}`;
                      }
                      else if (operation === 'getAll') {
                          requestMethod = 'GET';
                          returnAll = this.getNodeParameter('returnAll', i);
                          if (!returnAll) {
                              qs.limit = this.getNodeParameter('limit', i);
                          }
                          const additionalFields = this.getNodeParameter('additionalFields', i);
                          if (additionalFields.filterId) {
                              qs.filter_id = additionalFields.filterId;
                          }
                          if (additionalFields.firstChar) {
                              qs.first_char = additionalFields.firstChar;
                          }
                          endpoint = '/persons';
                      }
                      else if (operation === 'search') {
                          requestMethod = 'GET';
                          qs.term = this.getNodeParameter('term', i);
                          returnAll = this.getNodeParameter('returnAll', i);
                          if (!returnAll) {
                              qs.limit = this.getNodeParameter('limit', i);
                          }
                          const additionalFields = this.getNodeParameter('additionalFields', i);
                          if (additionalFields.fields) {
                              qs.fields = additionalFields.fields;
                          }
                          if (additionalFields.exactMatch) {
                              qs.exact_match = additionalFields.exactMatch;
                          }
                          if (additionalFields.organizationId) {
                              qs.organization_id = parseInt(additionalFields.organizationId, 10);
                          }
                          if (additionalFields.includeFields) {
                              qs.include_fields = additionalFields.includeFields;
                          }
                          endpoint = '/persons/search';
                      }
                      else if (operation === 'update') {
                          requestMethod = 'PUT';
                          const personId = this.getNodeParameter('personId', i);
                          endpoint = `/persons/${personId}`;
                          const updateFields = this.getNodeParameter('updateFields', i);
                          addAdditionalFields(body, updateFields);
                          if (body.label === 'null') {
                              body.label = null;
                          }
                      }
                  }
                  else if (resource === 'product') {
                      if (operation === 'getAll') {
                          requestMethod = 'GET';
                          returnAll = this.getNodeParameter('returnAll', i);
                          if (!returnAll) {
                              qs.limit = this.getNodeParameter('limit', i);
                          }
                          endpoint = '/products';
                      }
                  }
                  else {
                      throw new n8n_workflow_1.NodeOperationError(this.getNode(), `The resource "${resource}" is not known!`, {
                          itemIndex: i,
                      });
                  }
                  let responseData;
                  if (returnAll) {
                      responseData = await GenericFunctions_1.pipedriveApiRequestAllItems.call(this, requestMethod, endpoint, body, qs);
                  }
                  else {
                      if (customProperties !== undefined) {
                          (0, GenericFunctions_1.pipedriveEncodeCustomProperties)(customProperties, body);
                      }
                      responseData = await GenericFunctions_1.pipedriveApiRequest.call(this, requestMethod, endpoint, body, qs, formData, downloadFile);
                  }
                  if (resource === 'file' && operation === 'download') {
                      const newItem = {
                          json: items[i].json,
                          pairedItem: { item: i },
                          binary: {},
                      };
                      if (items[i].binary !== undefined) {
                          Object.assign(newItem.binary, items[i].binary);
                      }
                      items[i] = newItem;
                      const binaryPropertyName = this.getNodeParameter('binaryPropertyName', i);
                      items[i].binary[binaryPropertyName] = await this.helpers.prepareBinaryData(responseData.data);
                  }
                  else {
                      if (responseData.data === null) {
                          responseData.data = [];
                      }
                      if (operation === 'search' && ((_b = responseData.data) === null || _b === void 0 ? void 0 : _b.items)) {
                          responseData.data = responseData.data.items;
                          const additionalFields = this.getNodeParameter('additionalFields', i);
                          if (additionalFields.rawData !== true) {
                              responseData.data = responseData.data.map((item) => {
                                  return {
                                      result_score: item.result_score,
                                      ...item.item,
                                  };
                              });
                          }
                      }
                      responseData = responseData.data;
                      if (responseData.data === true) {
                          responseData = { success: true };
                      }
                      const executionData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray(responseData), { itemData: { item: i } });
                      returnData.push(...executionData);
                  }
              }
              catch (error) {
                  if (this.continueOnFail()) {
                      if (resource === 'file' && operation === 'download') {
                          items[i].json = { error: error.message };
                      }
                      else {
                          returnData.push({ json: { error: error.message }, pairedItem: { item: i } });
                      }
                      continue;
                  }
                  throw error;
              }
          }
          if (customProperties !== undefined) {
              for (const item of returnData) {
                  (0, GenericFunctions_1.pipedriveResolveCustomProperties)(customProperties, item);
              }
          }
          if (resource === 'file' && operation === 'download') {
              return [items];
          }
          else {
              return [returnData];
          }
      }
  }
  exports.Pipedrive = Pipedrive;
  //# sourceMappingURL=Pipedrive.node.js.map

documentation_markdown:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Pipedrive Trigger node documentation
  description: Learn how to use the Pipedrive Trigger node in n8n. Follow technical documentation to integrate Pipedrive Trigger node into your workflows.
  contentType: [integration, reference]
  ---

  # Pipedrive Trigger node

  [Pipedrive](https://www.pipedrive.com/){:target=_blank .external-link} is a cloud-based sales software company that aims to improve the productivity of businesses through the use of their software.

  /// note | Credentials
  You can find authentication information for this node [here](/integrations/builtin/credentials/pipedrive.md).
  ///

  ///  note  | Examples and templates
  For usage examples and templates to help you get started, refer to n8n's [Pipedrive Trigger integrations](https://n8n.io/integrations/pipedrive-trigger/){:target=_blank .external-link} page.
  ///

example_workflow:
  {"nodes":[{"parameters":{},"type":"n8n-nodes-base.node","typeVersion":1,"position":[220,120],"id":"be87d599-922d-4ca2-9654-00aef1f72c1f","name":"Node"}],"connections":{"Node":{"main":[[]]}},"pinData":{},"meta":{"templateCredsSetupCompleted":true,"instanceId":"54bd46c7c0f57b35eebc9d13f3c059d781114b6873e822384a45856b465d1d93"}}


