# nodes

node_type: nodes-base.goToWebinar
package_name: n8n-nodes-base
display_name: GoToWebinar
description: Consume the GoToWebinar API
category: transform
development_style: programmatic
version: 1
credentials_required:
  [
  {
  "name": "goToWebinarOAuth2Api",
  "required": true
  }
  ]

outputs:
  [
  "main"
  ]

updated_at: 2026-03-14 12:15:53
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: GoToWebinar node documentation
  description: Learn how to use the GoToWebinar node in n8n. Follow technical documentation to integrate GoToWebinar node into your workflows.
  contentType: [integration, reference]
  ---

  # GoToWebinar node

  Use the GoToWebinar node to automate work in GoToWebinar, and integrate GoToWebinar with other applications. n8n has built-in support for a wide range of GoToWebinar features, including creating, getting, and deleting attendees, organizers, and registrants.

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

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

  ## Operations

  * Attendee
      * Get
      * Get All
      * Get Details
  * Co-Organizer
      * Create
      * Delete
      * Get All
      * Re-invite
  * Panelist
      * Create
      * Delete
      * Get All
      * Re-invite
  * Registrant
      * Create
      * Delete
      * Get
      * Get All
  * Session
      * Get
      * Get All
      * Get Details
  * Webinar
      * Create
      * Get
      * Get All
      * Update

  ## Templates and examples

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

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

properties_schema:
  [
    {
      "displayName": "Resource",
      "name": "resource",
      "type": "options",
      "default": "attendee",
      "options": [
        {
          "name": "Attendee",
          "value": "attendee"
        },
        {
          "name": "Co-Organizer",
          "value": "coorganizer"
        },
        {
          "name": "Panelist",
          "value": "panelist"
        },
        {
          "name": "Registrant",
          "value": "registrant"
        },
        {
          "name": "Session",
          "value": "session"
        },
        {
          "name": "Webinar",
          "value": "webinar"
        }
      ],
      "noDataExpression": true
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get an attendee"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many attendees"
        },
        {
          "name": "Get Details",
          "value": "getDetails",
          "action": "Get details of an attendee"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "attendee"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Webinar Key Name or ID",
      "name": "webinarKey",
      "type": "options",
      "default": "",
      "description": "Key of the webinar that the attendee attended. Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>.",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "attendee"
          ]
        }
      },
      "typeOptions": {
        "loadOptionsMethod": "getWebinars"
      }
    },
    {
      "displayName": "Session Key Name or ID",
      "name": "sessionKey",
      "type": "options",
      "default": "",
      "description": "Key of the session that the attendee attended. Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>.",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "attendee"
          ]
        }
      },
      "typeOptions": {
        "loadOptionsMethod": "getWebinarSessions",
        "loadOptionsDependsOn": [
          "webinarKey"
        ]
      }
    },
    {
      "displayName": "Registrant Key",
      "name": "registrantKey",
      "type": "string",
      "default": "",
      "description": "Registrant key of the attendee at the webinar session",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "attendee"
          ],
          "operation": [
            "get"
          ]
        }
      }
    },
    {
      "displayName": "Registrant Key",
      "name": "registrantKey",
      "type": "string",
      "default": "",
      "description": "Registrant key of the attendee at the webinar session",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "attendee"
          ],
          "operation": [
            "getDetails"
          ]
        }
      }
    },
    {
      "displayName": "Details",
      "name": "details",
      "type": "options",
      "default": "",
      "description": "The details to retrieve for the attendee",
      "options": [
        {
          "name": "Polls",
          "value": "polls",
          "description": "Poll answers from the attendee in a webinar session"
        },
        {
          "name": "Questions",
          "value": "questions",
          "description": "Questions asked by the attendee in a webinar session"
        },
        {
          "name": "Survey Answers",
          "value": "surveyAnswers",
          "description": "Survey answers from the attendee in a webinar session"
        }
      ],
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "attendee"
          ],
          "operation": [
            "getDetails"
          ]
        }
      }
    },
    {
      "displayName": "Return All",
      "name": "returnAll",
      "type": "boolean",
      "default": false,
      "description": "Whether to return all results or only up to a given limit",
      "displayOptions": {
        "show": {
          "resource": [
            "attendee"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 10,
      "description": "Max number of results to return",
      "displayOptions": {
        "show": {
          "resource": [
            "attendee"
          ],
          "operation": [
            "getAll"
          ],
          "returnAll": [
            false
          ]
        }
      },
      "typeOptions": {
        "minValue": 1,
        "maxValue": 100
      }
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a coorganizer"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a coorganizer"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many coorganizers"
        },
        {
          "name": "Reinvite",
          "value": "reinvite",
          "action": "Reinvite a coorganizer"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "coorganizer"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Webinar Key Name or ID",
      "name": "webinarKey",
      "type": "options",
      "default": [],
      "description": "Key of the webinar that the co-organizer is hosting. Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>.",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "coorganizer"
          ],
          "operation": [
            "create"
          ]
        }
      },
      "typeOptions": {
        "loadOptionsMethod": "getWebinars"
      }
    },
    {
      "displayName": "Is External",
      "name": "isExternal",
      "type": "boolean",
      "default": false,
      "description": "Whether the co-organizer has no GoToWebinar account",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "coorganizer"
          ],
          "operation": [
            "create"
          ]
        }
      }
    },
    {
      "displayName": "Organizer Key",
      "name": "organizerKey",
      "type": "string",
      "default": "",
      "description": "The co-organizer's organizer key for the webinar",
      "displayOptions": {
        "show": {
          "resource": [
            "coorganizer"
          ],
          "operation": [
            "create"
          ],
          "isExternal": [
            false
          ]
        }
      }
    },
    {
      "displayName": "Given Name",
      "name": "givenName",
      "type": "string",
      "default": "",
      "description": "The co-organizer's given name",
      "displayOptions": {
        "show": {
          "resource": [
            "coorganizer"
          ],
          "operation": [
            "create"
          ],
          "isExternal": [
            true
          ]
        }
      }
    },
    {
      "displayName": "Email",
      "name": "email",
      "type": "string",
      "default": "",
      "description": "The co-organizer's email address",
      "displayOptions": {
        "show": {
          "resource": [
            "coorganizer"
          ],
          "operation": [
            "create"
          ],
          "isExternal": [
            true
          ]
        }
      }
    },
    {
      "displayName": "Webinar Key Name or ID",
      "name": "webinarKey",
      "type": "options",
      "default": [],
      "description": "Key of the webinar to delete. Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>.",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "coorganizer"
          ],
          "operation": [
            "delete"
          ]
        }
      },
      "typeOptions": {
        "loadOptionsMethod": "getWebinars"
      }
    },
    {
      "displayName": "Co-Organizer Key",
      "name": "coorganizerKey",
      "type": "string",
      "default": "",
      "description": "Key of the co-organizer to delete",
      "displayOptions": {
        "show": {
          "resource": [
            "coorganizer"
          ],
          "operation": [
            "delete"
          ]
        }
      }
    },
    {
      "displayName": "Is External",
      "name": "isExternal",
      "type": "boolean",
      "default": false,
      "description": "By default only internal co-organizers (with a GoToWebinar account) can be deleted. If you want to use this call for external co-organizers you have to set this parameter to 'true'.",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "coorganizer"
          ],
          "operation": [
            "delete"
          ]
        }
      }
    },
    {
      "displayName": "Webinar Key Name or ID",
      "name": "webinarKey",
      "type": "options",
      "default": [],
      "description": "Key of the webinar to retrieve all co-organizers from. Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>.",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "coorganizer"
          ],
          "operation": [
            "getAll"
          ]
        }
      },
      "typeOptions": {
        "loadOptionsMethod": "getWebinars"
      }
    },
    {
      "displayName": "Return All",
      "name": "returnAll",
      "type": "boolean",
      "default": false,
      "description": "Whether to return all results or only up to a given limit",
      "displayOptions": {
        "show": {
          "resource": [
            "coorganizer"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 10,
      "description": "Max number of results to return",
      "displayOptions": {
        "show": {
          "resource": [
            "coorganizer"
          ],
          "operation": [
            "getAll"
          ],
          "returnAll": [
            false
          ]
        }
      },
      "typeOptions": {
        "minValue": 1,
        "maxValue": 100
      }
    },
    {
      "displayName": "Webinar Key",
      "name": "webinarKey",
      "type": "string",
      "default": "",
      "description": "By default only internal co-organizers (with a GoToWebinar account) can be deleted. If you want to use this call for external co-organizers you have to set this parameter to 'true'.",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "coorganizer"
          ],
          "operation": [
            "reinvite"
          ]
        }
      }
    },
    {
      "displayName": "Co-Organizer Key",
      "name": "coorganizerKey",
      "type": "string",
      "default": "",
      "description": "Key of the co-organizer to reinvite",
      "displayOptions": {
        "show": {
          "resource": [
            "coorganizer"
          ],
          "operation": [
            "reinvite"
          ]
        }
      }
    },
    {
      "displayName": "Is External",
      "name": "isExternal",
      "type": "boolean",
      "default": false,
      "description": "Whether the co-organizer has no GoToWebinar account",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "coorganizer"
          ],
          "operation": [
            "reinvite"
          ]
        }
      }
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a panelist"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a panelist"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many panelists"
        },
        {
          "name": "Reinvite",
          "value": "reinvite",
          "action": "Reinvite a panelist"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "panelist"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Name",
      "name": "name",
      "type": "string",
      "default": "",
      "description": "Name of the panelist to create",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "panelist"
          ],
          "operation": [
            "create"
          ]
        }
      }
    },
    {
      "displayName": "Email",
      "name": "email",
      "type": "string",
      "default": "",
      "description": "Email address of the panelist to create",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "panelist"
          ],
          "operation": [
            "create"
          ]
        }
      }
    },
    {
      "displayName": "Webinar Key Name or ID",
      "name": "webinarKey",
      "type": "options",
      "default": [],
      "description": "Key of the webinar that the panelist will present at. Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>.",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "panelist"
          ],
          "operation": [
            "create"
          ]
        }
      },
      "typeOptions": {
        "loadOptionsMethod": "getWebinars"
      }
    },
    {
      "displayName": "Webinar Key Name or ID",
      "name": "webinarKey",
      "type": "options",
      "default": [],
      "description": "Key of the webinar to retrieve all panelists from. Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>.",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "panelist"
          ],
          "operation": [
            "getAll"
          ]
        }
      },
      "typeOptions": {
        "loadOptionsMethod": "getWebinars"
      }
    },
    {
      "displayName": "Return All",
      "name": "returnAll",
      "type": "boolean",
      "default": false,
      "description": "Whether to return all results or only up to a given limit",
      "displayOptions": {
        "show": {
          "resource": [
            "panelist"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 10,
      "description": "Max number of results to return",
      "displayOptions": {
        "show": {
          "resource": [
            "panelist"
          ],
          "operation": [
            "getAll"
          ],
          "returnAll": [
            false
          ]
        }
      },
      "typeOptions": {
        "minValue": 1,
        "maxValue": 100
      }
    },
    {
      "displayName": "Webinar Key Name or ID",
      "name": "webinarKey",
      "type": "options",
      "default": [],
      "description": "Key of the webinar to delete the panelist from. Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>.",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "panelist"
          ],
          "operation": [
            "delete"
          ]
        }
      },
      "typeOptions": {
        "loadOptionsMethod": "getWebinars"
      }
    },
    {
      "displayName": "Panelist Key",
      "name": "panelistKey",
      "type": "string",
      "default": "",
      "description": "Key of the panelist to delete",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "panelist"
          ],
          "operation": [
            "delete"
          ]
        }
      }
    },
    {
      "displayName": "Webinar Key Name or ID",
      "name": "webinarKey",
      "type": "options",
      "default": [],
      "description": "Key of the webinar to reinvite the panelist to. Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>.",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "panelist"
          ],
          "operation": [
            "reinvite"
          ]
        }
      },
      "typeOptions": {
        "loadOptionsMethod": "getWebinars"
      }
    },
    {
      "displayName": "Panelist Key",
      "name": "panelistKey",
      "type": "string",
      "default": "",
      "description": "Key of the panelist to reinvite",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "panelist"
          ],
          "operation": [
            "reinvite"
          ]
        }
      }
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a registrant"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a registrant"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a registrant"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many registrants"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "registrant"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Webinar Key Name or ID",
      "name": "webinarKey",
      "type": "options",
      "default": [],
      "description": "Key of the webinar of the registrant to create. Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>.",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "registrant"
          ],
          "operation": [
            "create"
          ]
        }
      },
      "typeOptions": {
        "loadOptionsMethod": "getWebinars"
      }
    },
    {
      "displayName": "First Name",
      "name": "firstName",
      "type": "string",
      "default": "",
      "description": "First name of the registrant to create",
      "displayOptions": {
        "show": {
          "resource": [
            "registrant"
          ],
          "operation": [
            "create"
          ]
        }
      }
    },
    {
      "displayName": "Last Name",
      "name": "lastName",
      "type": "string",
      "default": "",
      "description": "Last name of the registrant to create",
      "displayOptions": {
        "show": {
          "resource": [
            "registrant"
          ],
          "operation": [
            "create"
          ]
        }
      }
    },
    {
      "displayName": "Email",
      "name": "email",
      "type": "string",
      "default": "",
      "description": "Email address of the registrant to create",
      "displayOptions": {
        "show": {
          "resource": [
            "registrant"
          ],
          "operation": [
            "create"
          ]
        }
      }
    },
    {
      "displayName": "Additional Fields",
      "name": "additionalFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Full Address",
          "name": "fullAddress",
          "placeholder": "Add Address Fields",
          "type": "fixedCollection",
          "description": "Full address of the registrant to create",
          "default": {},
          "options": [
            {
              "displayName": "Details",
              "name": "details",
              "values": [
                {
                  "displayName": "Address",
                  "name": "address",
                  "type": "string",
                  "default": ""
                },
                {
                  "displayName": "City",
                  "name": "city",
                  "type": "string",
                  "default": ""
                },
                {
                  "displayName": "State",
                  "name": "state",
                  "type": "string",
                  "default": ""
                },
                {
                  "displayName": "Zip Code",
                  "name": "zipCode",
                  "type": "string",
                  "default": ""
                },
                {
                  "displayName": "Country",
                  "name": "country",
                  "type": "string",
                  "default": ""
                }
              ]
            }
          ]
        },
        {
          "displayName": "Industry",
          "name": "industry",
          "type": "string",
          "default": "",
          "description": "The type of industry the registrant's organization belongs to"
        },
        {
          "displayName": "Job Title",
          "name": "jobTitle",
          "type": "string",
          "default": ""
        },
        {
          "displayName": "MultiChoice Responses",
          "name": "multiChoiceResponses",
          "placeholder": "Add MultiChoice Response",
          "type": "fixedCollection",
          "typeOptions": {
            "multipleValues": true
          },
          "description": "Set the answers to all questions",
          "default": {},
          "options": [
            {
              "displayName": "Details",
              "name": "details",
              "values": [
                {
                  "displayName": "Question Key Name or ID",
                  "name": "questionKey",
                  "type": "options",
                  "description": "Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>",
                  "typeOptions": {
                    "loadOptionsMethod": "getRegistranMultiChoiceQuestions",
                    "loadOptionsDependsOn": [
                      "webinarKey"
                    ]
                  },
                  "default": ""
                },
                {
                  "displayName": "Answer Key",
                  "name": "AnswerKey",
                  "type": "string",
                  "default": "",
                  "description": "Answer ID of the question"
                }
              ]
            }
          ]
        },
        {
          "displayName": "Number of Employees",
          "name": "numberOfEmployees",
          "type": "string",
          "default": "",
          "description": "The size in employees of the registrant's organization"
        },
        {
          "displayName": "Organization",
          "name": "organization",
          "type": "string",
          "default": ""
        },
        {
          "displayName": "Telephone",
          "name": "phone",
          "type": "string",
          "default": ""
        },
        {
          "displayName": "Purchasing Role",
          "name": "purchasingRole",
          "type": "string",
          "default": "",
          "description": "Registrant's role in purchasing the product"
        },
        {
          "displayName": "Purchasing Time Frame",
          "name": "purchasingTimeFrame",
          "type": "string",
          "default": "",
          "description": "Time frame within which the product will be purchased"
        },
        {
          "displayName": "Questions and Comments",
          "name": "questionsAndComments",
          "type": "string",
          "default": "",
          "description": "Questions or comments made by the registrant during registration"
        },
        {
          "displayName": "Resend Confirmation",
          "name": "resendConfirmation",
          "type": "boolean",
          "default": false
        },
        {
          "displayName": "Simple Responses",
          "name": "simpleResponses",
          "placeholder": "Add Simple Response",
          "type": "fixedCollection",
          "typeOptions": {
            "multipleValues": true
          },
          "description": "Set the answers to all questions",
          "default": {},
          "options": [
            {
              "displayName": "Details",
              "name": "details",
              "values": [
                {
                  "displayName": "Question Key Name or ID",
                  "name": "questionKey",
                  "type": "options",
                  "description": "Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>",
                  "typeOptions": {
                    "loadOptionsMethod": "getRegistranSimpleQuestions",
                    "loadOptionsDependsOn": [
                      "webinarKey"
                    ]
                  },
                  "default": ""
                },
                {
                  "displayName": "Response Text",
                  "name": "responseText",
                  "type": "string",
                  "default": "",
                  "description": "Text of the response to the question"
                }
              ]
            }
          ]
        },
        {
          "displayName": "Source",
          "name": "source",
          "type": "string",
          "default": "",
          "description": "The source that led to the registration"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "registrant"
          ],
          "operation": [
            "create"
          ]
        }
      }
    },
    {
      "displayName": "Webinar Key Name or ID",
      "name": "webinarKey",
      "type": "options",
      "default": [],
      "description": "The key of the webinar to retrieve registrants from. Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>.",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "registrant"
          ],
          "operation": [
            "getAll"
          ]
        }
      },
      "typeOptions": {
        "loadOptionsMethod": "getWebinars"
      }
    },
    {
      "displayName": "Return All",
      "name": "returnAll",
      "type": "boolean",
      "default": false,
      "description": "Whether to return all results or only up to a given limit",
      "displayOptions": {
        "show": {
          "resource": [
            "registrant"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 10,
      "description": "Max number of results to return",
      "displayOptions": {
        "show": {
          "resource": [
            "registrant"
          ],
          "operation": [
            "getAll"
          ],
          "returnAll": [
            false
          ]
        }
      },
      "typeOptions": {
        "minValue": 1,
        "maxValue": 100
      }
    },
    {
      "displayName": "Webinar Key Name or ID",
      "name": "webinarKey",
      "type": "options",
      "default": [],
      "description": "Key of the webinar of the registrant to delete. Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>.",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "registrant"
          ],
          "operation": [
            "delete"
          ]
        }
      },
      "typeOptions": {
        "loadOptionsMethod": "getWebinars"
      }
    },
    {
      "displayName": "Registrant Key",
      "name": "registrantKey",
      "type": "string",
      "default": "",
      "description": "Key of the registrant to delete",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "registrant"
          ],
          "operation": [
            "delete"
          ]
        }
      }
    },
    {
      "displayName": "Webinar Key Name or ID",
      "name": "webinarKey",
      "type": "options",
      "default": [],
      "description": "Key of the webinar of the registrant to retrieve. Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>.",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "registrant"
          ],
          "operation": [
            "get"
          ]
        }
      },
      "typeOptions": {
        "loadOptionsMethod": "getWebinars"
      }
    },
    {
      "displayName": "Registrant Key",
      "name": "registrantKey",
      "type": "string",
      "default": "",
      "description": "Key of the registrant to retrieve",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "registrant"
          ],
          "operation": [
            "get"
          ]
        }
      }
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a session"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many sessions"
        },
        {
          "name": "Get Details",
          "value": "getDetails",
          "action": "Get details on a session"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "session"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Return All",
      "name": "returnAll",
      "type": "boolean",
      "default": false,
      "description": "Whether to return all results or only up to a given limit",
      "displayOptions": {
        "show": {
          "resource": [
            "session"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 10,
      "description": "Max number of results to return",
      "displayOptions": {
        "show": {
          "resource": [
            "session"
          ],
          "operation": [
            "getAll"
          ],
          "returnAll": [
            false
          ]
        }
      },
      "typeOptions": {
        "minValue": 1,
        "maxValue": 100
      }
    },
    {
      "displayName": "Additional Fields",
      "name": "additionalFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Time Range",
          "name": "times",
          "type": "fixedCollection",
          "placeholder": "Add Time Range",
          "required": true,
          "default": {},
          "options": [
            {
              "displayName": "Times Properties",
              "name": "timesProperties",
              "values": [
                {
                  "displayName": "Start Time",
                  "name": "fromTime",
                  "type": "dateTime",
                  "description": "Start of the datetime range for the session",
                  "default": ""
                },
                {
                  "displayName": "End Time",
                  "name": "toTime",
                  "type": "dateTime",
                  "description": "End of the datetime range for the session",
                  "default": ""
                }
              ]
            }
          ]
        },
        {
          "displayName": "Webinar Key Name or ID",
          "name": "webinarKey",
          "type": "options",
          "typeOptions": {
            "loadOptionsMethod": "getWebinars"
          },
          "default": {},
          "description": "Webinar by which to filter the sessions to retrieve. Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>."
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "session"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Webinar Key Name or ID",
      "name": "webinarKey",
      "type": "options",
      "default": [],
      "description": "Key of the webinar to which the session belongs. Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>.",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "session"
          ],
          "operation": [
            "get",
            "getDetails"
          ]
        }
      },
      "typeOptions": {
        "loadOptionsMethod": "getWebinars"
      }
    },
    {
      "displayName": "Session Key",
      "name": "sessionKey",
      "type": "string",
      "default": "",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "session"
          ],
          "operation": [
            "get",
            "getDetails"
          ]
        }
      }
    },
    {
      "displayName": "Details",
      "name": "details",
      "type": "options",
      "default": "performance",
      "options": [
        {
          "name": "Performance",
          "value": "performance",
          "description": "Performance details for a webinar session"
        },
        {
          "name": "Polls",
          "value": "polls",
          "description": "Questions and answers for polls from a webinar session"
        },
        {
          "name": "Questions",
          "value": "questions",
          "description": "Questions and answers for a past webinar session"
        },
        {
          "name": "Surveys",
          "value": "surveys",
          "description": "Surveys for a past webinar session"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "session"
          ],
          "operation": [
            "getDetails"
          ]
        }
      }
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a webinar"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a webinar"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many webinars"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a webinar"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "webinar"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Subject",
      "name": "subject",
      "type": "string",
      "default": "",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "webinar"
          ],
          "operation": [
            "create"
          ]
        }
      }
    },
    {
      "displayName": "Time Range",
      "name": "times",
      "type": "fixedCollection",
      "default": {},
      "options": [
        {
          "displayName": "Times Properties",
          "name": "timesProperties",
          "values": [
            {
              "displayName": "Start Time",
              "name": "startTime",
              "type": "dateTime",
              "required": true,
              "default": ""
            },
            {
              "displayName": "End Time",
              "name": "endTime",
              "type": "dateTime",
              "required": true,
              "default": ""
            }
          ]
        }
      ],
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "webinar"
          ],
          "operation": [
            "create"
          ]
        }
      },
      "typeOptions": {
        "multipleValues": true
      }
    },
    {
      "displayName": "Additional Fields",
      "name": "additionalFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Description",
          "name": "description",
          "type": "string",
          "default": ""
        },
        {
          "displayName": "Experience Type",
          "name": "experienceType",
          "type": "options",
          "default": "CLASSIC",
          "options": [
            {
              "name": "Classic",
              "value": "CLASSIC"
            },
            {
              "name": "Broadcast",
              "value": "BROADCAST"
            },
            {
              "name": "Simulive",
              "value": "SIMULIVE"
            }
          ]
        },
        {
          "displayName": "Is On-Demand",
          "name": "isOnDemand",
          "type": "boolean",
          "default": false
        },
        {
          "displayName": "Is Password Protected",
          "name": "isPasswordProtected",
          "type": "boolean",
          "default": false
        },
        {
          "displayName": "Timezone Name or ID",
          "name": "timezone",
          "type": "options",
          "description": "Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>",
          "default": "",
          "placeholder": "2020-12-11T09:00:00Z",
          "typeOptions": {
            "alwaysOpenEditWindow": true,
            "loadOptionsMethod": "getTimezones"
          }
        },
        {
          "displayName": "Webinar Type",
          "name": "type",
          "type": "options",
          "default": "single_session",
          "options": [
            {
              "name": "Single Session",
              "value": "single_session",
              "description": "Webinar with one single meeting"
            },
            {
              "name": "Series",
              "value": "series",
              "description": "Webinar with multiple meetings times where attendees choose only one to attend"
            },
            {
              "name": "Sequence",
              "value": "sequence",
              "description": "Webinar with multiple meeting times where attendees are expected to be the same for all sessions"
            }
          ]
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "webinar"
          ],
          "operation": [
            "create"
          ]
        }
      }
    },
    {
      "displayName": "Webinar Key",
      "name": "webinarKey",
      "type": "string",
      "default": "",
      "description": "Key of the webinar to delete",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "webinar"
          ],
          "operation": [
            "delete"
          ]
        }
      }
    },
    {
      "displayName": "Additional Fields",
      "name": "additionalFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Send Cancellation E-Mails",
          "name": "sendCancellationEmails",
          "type": "boolean",
          "default": false
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "webinar"
          ],
          "operation": [
            "delete"
          ]
        }
      }
    },
    {
      "displayName": "Webinar Key",
      "name": "webinarKey",
      "type": "string",
      "default": "",
      "description": "Key of the webinar to retrieve",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "webinar"
          ],
          "operation": [
            "get"
          ]
        }
      }
    },
    {
      "displayName": "Return All",
      "name": "returnAll",
      "type": "boolean",
      "default": false,
      "description": "Whether to return all results or only up to a given limit",
      "displayOptions": {
        "show": {
          "resource": [
            "webinar"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 10,
      "description": "Max number of results to return",
      "displayOptions": {
        "show": {
          "resource": [
            "webinar"
          ],
          "operation": [
            "getAll"
          ],
          "returnAll": [
            false
          ]
        }
      },
      "typeOptions": {
        "minValue": 1,
        "maxValue": 100
      }
    },
    {
      "displayName": "Additional Fields",
      "name": "additionalFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Time Range",
          "name": "times",
          "type": "fixedCollection",
          "placeholder": "Add Time Range",
          "required": true,
          "default": {},
          "options": [
            {
              "displayName": "Times Properties",
              "name": "timesProperties",
              "values": [
                {
                  "displayName": "Start Time",
                  "name": "fromTime",
                  "type": "dateTime",
                  "description": "Start of the datetime range for the webinar",
                  "default": ""
                },
                {
                  "displayName": "End Time",
                  "name": "toTime",
                  "type": "dateTime",
                  "description": "End of the datetime range for the webinar",
                  "default": ""
                }
              ]
            }
          ]
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "webinar"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Webinar Key",
      "name": "webinarKey",
      "type": "string",
      "default": "",
      "description": "Key of the webinar to update",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "webinar"
          ],
          "operation": [
            "update"
          ]
        }
      }
    },
    {
      "displayName": "Notify Participants",
      "name": "notifyParticipants",
      "type": "boolean",
      "default": false,
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "webinar"
          ],
          "operation": [
            "update"
          ]
        }
      }
    },
    {
      "displayName": "Update Fields",
      "name": "updateFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Description",
          "name": "description",
          "type": "string",
          "default": ""
        },
        {
          "displayName": "Experience Type",
          "name": "experienceType",
          "type": "options",
          "default": "CLASSIC",
          "options": [
            {
              "name": "Classic",
              "value": "CLASSIC"
            },
            {
              "name": "Broadcast",
              "value": "BROADCAST"
            },
            {
              "name": "Simulive",
              "value": "SIMULIVE"
            }
          ]
        },
        {
          "displayName": "Is On-Demand",
          "name": "isOnDemand",
          "type": "boolean",
          "default": false,
          "description": "Whether the webinar may be watched anytime"
        },
        {
          "displayName": "Is Password Protected",
          "name": "isPasswordProtected",
          "type": "boolean",
          "default": false,
          "description": "Whether the webinar requires a password for attendees to join"
        },
        {
          "displayName": "Times",
          "name": "times",
          "type": "fixedCollection",
          "default": {},
          "typeOptions": {
            "multipleValues": true
          },
          "options": [
            {
              "displayName": "Times Properties",
              "name": "timesProperties",
              "values": [
                {
                  "displayName": "Start Time",
                  "name": "startTime",
                  "type": "dateTime",
                  "required": true,
                  "default": ""
                },
                {
                  "displayName": "End Time",
                  "name": "endTime",
                  "type": "dateTime",
                  "required": true,
                  "default": ""
                }
              ]
            }
          ]
        },
        {
          "displayName": "Subject",
          "name": "subject",
          "type": "string",
          "default": "",
          "description": "Name or topic of the webinar"
        },
        {
          "displayName": "Timezone Name or ID",
          "name": "timezone",
          "type": "options",
          "default": "",
          "placeholder": "2020-12-11T09:00:00Z",
          "description": "Timezone where the webinar is to take place. Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>.",
          "typeOptions": {
            "alwaysOpenEditWindow": true,
            "loadOptionsMethod": "getTimezones"
          }
        },
        {
          "displayName": "Webinar Type",
          "name": "type",
          "type": "options",
          "default": "single_session",
          "options": [
            {
              "name": "Single Session",
              "value": "single_session",
              "description": "Webinar with one single meeting"
            },
            {
              "name": "Series",
              "value": "series",
              "description": "Webinar with multiple meetings times where attendees choose only one to attend"
            },
            {
              "name": "Sequence",
              "value": "sequence",
              "description": "Webinar with multiple meeting times where attendees are expected to be the same for all sessions"
            }
          ]
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "webinar"
          ],
          "operation": [
            "update"
          ]
        }
      }
    }
  ]

operations:
  [
    {
      "operation": "get",
      "name": "Get"
    },
    {
      "operation": "getAll",
      "name": "Get Many"
    },
    {
      "operation": "getDetails",
      "name": "Get Details"
    }
  ]


node_type: nodes-base.grafanaTool
package_name: n8n-nodes-base
display_name: Grafana Tool
description: Consume the Grafana API (AI Tool variant for use with AI Agents)
category: transform
development_style: programmatic
version: 1
credentials_required:
  [
  {
  "name": "grafanaApi",
  "required": true
  }
  ]

outputs:
  [
  {
  "type": "ai_tool",
  "displayName": "Tool"
  }
  ]

output_names:
  [
  "Tool"
  ]

updated_at: 2026-03-14 12:15:53
tool_variant_of: nodes-base.grafana
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Grafana node documentation
  description: Learn how to use the Grafana node in n8n. Follow technical documentation to integrate Grafana node into your workflows.
  contentType: [integration, reference]
  ---

  # Grafana node

  Use the Grafana node to automate work in Grafana, and integrate Grafana with other applications. n8n has built-in support for a wide range of Grafana features, including creating, updating, deleting, and getting dashboards, teams, and users.

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

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

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

  ## Operations

  * Dashboard
      * Create a dashboard
      * Delete a dashboard
      * Get a dashboard
      * Get all dashboards
      * Update a dashboard
  * Team
      * Create a team
      * Delete a team
      * Get a team
      * Retrieve all teams
      * Update a team
  * Team Member
      * Add a member to a team
      * Retrieve all team members
      * Remove a member from a team
  * User
      * Delete a user from the current organization
      * Retrieve all users in the current organization
      * Update a user in the current organization

  ## Templates and examples

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

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

properties_schema:
  [
    {
      "displayName": "Tool Description",
      "name": "toolDescription",
      "type": "string",
      "default": "",
      "required": false,
      "description": "Description for the AI to understand what this tool does and when to use it",
      "typeOptions": {
        "rows": 3
      },
      "placeholder": "e.g., Use this tool to interact with Grafana"
    },
    {
      "displayName": "Resource",
      "name": "resource",
      "type": "options",
      "default": "dashboard",
      "options": [
        {
          "name": "Dashboard",
          "value": "dashboard"
        },
        {
          "name": "Team",
          "value": "team"
        },
        {
          "name": "Team Member",
          "value": "teamMember"
        },
        {
          "name": "User",
          "value": "user"
        }
      ],
      "noDataExpression": true
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "description": "Create a dashboard",
          "action": "Create a dashboard"
        },
        {
          "name": "Delete",
          "value": "delete",
          "description": "Delete a dashboard",
          "action": "Delete a dashboard"
        },
        {
          "name": "Get",
          "value": "get",
          "description": "Get a dashboard",
          "action": "Get a dashboard"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "description": "Get many dashboards",
          "action": "Get many dashboards"
        },
        {
          "name": "Update",
          "value": "update",
          "description": "Update a dashboard",
          "action": "Update a dashboard"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "dashboard"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Title",
      "name": "title",
      "type": "string",
      "default": "",
      "description": "Title of the dashboard to create",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "dashboard"
          ],
          "operation": [
            "create"
          ]
        }
      }
    },
    {
      "displayName": "Additional Fields",
      "name": "additionalFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Folder Name or ID",
          "name": "folderId",
          "type": "options",
          "default": "",
          "description": "Folder to create the dashboard in - if the folder is unspecified, the dashboard will be saved to the General folder. Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>.",
          "typeOptions": {
            "loadOptionsMethod": "getFolders"
          }
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "dashboard"
          ],
          "operation": [
            "create"
          ]
        }
      }
    },
    {
      "displayName": "Dashboard UID or URL",
      "name": "dashboardUidOrUrl",
      "type": "string",
      "default": "",
      "description": "Unique alphabetic identifier or URL of the dashboard to delete",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "dashboard"
          ],
          "operation": [
            "delete"
          ]
        }
      }
    },
    {
      "displayName": "Dashboard UID or URL",
      "name": "dashboardUidOrUrl",
      "type": "string",
      "default": "",
      "description": "Unique alphabetic identifier or URL of the dashboard to retrieve",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "dashboard"
          ],
          "operation": [
            "get"
          ]
        }
      }
    },
    {
      "displayName": "Return All",
      "name": "returnAll",
      "type": "boolean",
      "default": false,
      "description": "Whether to return all results or only up to a given limit",
      "displayOptions": {
        "show": {
          "resource": [
            "dashboard"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 50,
      "description": "Max number of results to return",
      "displayOptions": {
        "show": {
          "resource": [
            "dashboard"
          ],
          "operation": [
            "getAll"
          ],
          "returnAll": [
            false
          ]
        }
      },
      "typeOptions": {
        "minValue": 1,
        "maxValue": 100
      }
    },
    {
      "displayName": "Filters",
      "name": "filters",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Search Query",
          "name": "query",
          "type": "string",
          "default": ""
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "dashboard"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Dashboard UID or URL",
      "name": "dashboardUidOrUrl",
      "type": "string",
      "default": "",
      "description": "Unique alphabetic identifier or URL of the dashboard to update",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "dashboard"
          ],
          "operation": [
            "update"
          ]
        }
      }
    },
    {
      "displayName": "Update Fields",
      "name": "updateFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Folder Name or ID",
          "name": "folderId",
          "type": "options",
          "default": "",
          "description": "Folder to move the dashboard into - if the folder is unspecified, the dashboard will be saved to the General folder. Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>.",
          "typeOptions": {
            "loadOptionsMethod": "getFolders"
          }
        },
        {
          "displayName": "Title",
          "name": "title",
          "type": "string",
          "default": "",
          "description": "New title of the dashboard"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "dashboard"
          ],
          "operation": [
            "update"
          ]
        }
      }
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "description": "Create a team",
          "action": "Create a team"
        },
        {
          "name": "Delete",
          "value": "delete",
          "description": "Delete a team",
          "action": "Delete a team"
        },
        {
          "name": "Get",
          "value": "get",
          "description": "Get a team",
          "action": "Get a team"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "description": "Retrieve many teams",
          "action": "Get many teams"
        },
        {
          "name": "Update",
          "value": "update",
          "description": "Update a team",
          "action": "Update a team"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "team"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Name",
      "name": "name",
      "type": "string",
      "default": "",
      "description": "Name of the team to create",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "team"
          ],
          "operation": [
            "create"
          ]
        }
      }
    },
    {
      "displayName": "Additional Fields",
      "name": "additionalFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Email",
          "name": "email",
          "type": "string",
          "placeholder": "engineering@n8n.io",
          "default": "",
          "description": "Email of the team to create"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "team"
          ],
          "operation": [
            "create"
          ]
        }
      }
    },
    {
      "displayName": "Team ID",
      "name": "teamId",
      "type": "string",
      "default": "",
      "description": "ID of the team to delete",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "team"
          ],
          "operation": [
            "delete"
          ]
        }
      }
    },
    {
      "displayName": "Team ID",
      "name": "teamId",
      "type": "string",
      "default": "",
      "description": "ID of the team to retrieve",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "team"
          ],
          "operation": [
            "get"
          ]
        }
      }
    },
    {
      "displayName": "Return All",
      "name": "returnAll",
      "type": "boolean",
      "default": false,
      "description": "Whether to return all results or only up to a given limit",
      "displayOptions": {
        "show": {
          "resource": [
            "team"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 50,
      "description": "Max number of results to return",
      "displayOptions": {
        "show": {
          "resource": [
            "team"
          ],
          "operation": [
            "getAll"
          ],
          "returnAll": [
            false
          ]
        }
      },
      "typeOptions": {
        "minValue": 1
      }
    },
    {
      "displayName": "Filters",
      "name": "filters",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Name",
          "name": "name",
          "type": "string",
          "default": "",
          "description": "Name of the team to filter by"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "team"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Team ID",
      "name": "teamId",
      "type": "string",
      "default": "",
      "description": "ID of the team to update",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "team"
          ],
          "operation": [
            "update"
          ]
        }
      }
    },
    {
      "displayName": "Update Fields",
      "name": "updateFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Email",
          "name": "email",
          "type": "string",
          "placeholder": "engineering@n8n.io",
          "default": "",
          "description": "Email of the team to update"
        },
        {
          "displayName": "Name",
          "name": "name",
          "type": "string",
          "placeholder": "Engineering Team",
          "default": "",
          "description": "Name of the team to update"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "team"
          ],
          "operation": [
            "update"
          ]
        }
      }
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "add",
      "options": [
        {
          "name": "Add",
          "value": "add",
          "description": "Add a member to a team",
          "action": "Add a team member"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "description": "Retrieve many team members",
          "action": "Get many team members"
        },
        {
          "name": "Remove",
          "value": "remove",
          "description": "Remove a member from a team",
          "action": "Remove a team member"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "teamMember"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "User Name or ID",
      "name": "userId",
      "type": "options",
      "default": "",
      "description": "User to add to a team. Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>.",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "teamMember"
          ],
          "operation": [
            "add"
          ]
        }
      },
      "typeOptions": {
        "loadOptionsMethod": "getUsers"
      }
    },
    {
      "displayName": "Team Name or ID",
      "name": "teamId",
      "type": "options",
      "default": "",
      "description": "Team to add the user to. Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>.",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "teamMember"
          ],
          "operation": [
            "add"
          ]
        }
      },
      "typeOptions": {
        "loadOptionsMethod": "getTeams"
      }
    },
    {
      "displayName": "User Name or ID",
      "name": "memberId",
      "type": "options",
      "default": "",
      "description": "User to remove from the team. Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>.",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "teamMember"
          ],
          "operation": [
            "remove"
          ]
        }
      },
      "typeOptions": {
        "loadOptionsMethod": "getUsers"
      }
    },
    {
      "displayName": "Team Name or ID",
      "name": "teamId",
      "type": "options",
      "default": "",
      "description": "Team to remove the user from. Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>.",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "teamMember"
          ],
          "operation": [
            "remove"
          ]
        }
      },
      "typeOptions": {
        "loadOptionsMethod": "getTeams"
      }
    },
    {
      "displayName": "Team Name or ID",
      "name": "teamId",
      "type": "options",
      "default": "",
      "description": "Team to retrieve all members from. Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>.",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "teamMember"
          ],
          "operation": [
            "getAll"
          ]
        }
      },
      "typeOptions": {
        "loadOptionsMethod": "getTeams"
      }
    },
    {
      "displayName": "Return All",
      "name": "returnAll",
      "type": "boolean",
      "default": false,
      "description": "Whether to return all results or only up to a given limit",
      "displayOptions": {
        "show": {
          "resource": [
            "teamMember"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 50,
      "description": "Max number of results to return",
      "displayOptions": {
        "show": {
          "resource": [
            "teamMember"
          ],
          "operation": [
            "getAll"
          ],
          "returnAll": [
            false
          ]
        }
      },
      "typeOptions": {
        "minValue": 1
      }
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Delete",
          "value": "delete",
          "description": "Delete a user from the current organization",
          "action": "Delete a user"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "description": "Retrieve many users in the current organization",
          "action": "Get many users"
        },
        {
          "name": "Update",
          "value": "update",
          "description": "Update a user in the current organization",
          "action": "Update a user"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "User ID",
      "name": "userId",
      "type": "string",
      "default": "",
      "description": "ID of the user to update",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ],
          "operation": [
            "update"
          ]
        }
      }
    },
    {
      "displayName": "Update Fields",
      "name": "updateFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Role",
          "name": "role",
          "type": "options",
          "default": "Admin",
          "description": "New role for the user",
          "options": [
            {
              "name": "Admin",
              "value": "Admin"
            },
            {
              "name": "Editor",
              "value": "Editor"
            },
            {
              "name": "Viewer",
              "value": "Viewer"
            }
          ]
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ],
          "operation": [
            "update"
          ]
        }
      }
    },
    {
      "displayName": "User ID",
      "name": "userId",
      "type": "string",
      "default": "",
      "description": "ID of the user to delete",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ],
          "operation": [
            "delete"
          ]
        }
      }
    },
    {
      "displayName": "Return All",
      "name": "returnAll",
      "type": "boolean",
      "default": false,
      "description": "Whether to return all results or only up to a given limit",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 50,
      "description": "Max number of results to return",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ],
          "operation": [
            "getAll"
          ],
          "returnAll": [
            false
          ]
        }
      },
      "typeOptions": {
        "minValue": 1
      }
    }
  ]

operations:
  [
    {
      "operation": "create",
      "name": "Create",
      "description": "Create a dashboard"
    },
    {
      "operation": "delete",
      "name": "Delete",
      "description": "Delete a dashboard"
    },
    {
      "operation": "get",
      "name": "Get",
      "description": "Get a dashboard"
    },
    {
      "operation": "getAll",
      "name": "Get Many",
      "description": "Get many dashboards"
    },
    {
      "operation": "update",
      "name": "Update",
      "description": "Update a dashboard"
    }
  ]


node_type: nodes-base.grafana
package_name: n8n-nodes-base
display_name: Grafana
description: Consume the Grafana API
category: transform
development_style: programmatic
version: 1
credentials_required:
  [
  {
  "name": "grafanaApi",
  "required": true
  }
  ]

outputs:
  [
  "main"
  ]

updated_at: 2026-03-14 12:15:53
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Grafana node documentation
  description: Learn how to use the Grafana node in n8n. Follow technical documentation to integrate Grafana node into your workflows.
  contentType: [integration, reference]
  ---

  # Grafana node

  Use the Grafana node to automate work in Grafana, and integrate Grafana with other applications. n8n has built-in support for a wide range of Grafana features, including creating, updating, deleting, and getting dashboards, teams, and users.

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

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

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

  ## Operations

  * Dashboard
      * Create a dashboard
      * Delete a dashboard
      * Get a dashboard
      * Get all dashboards
      * Update a dashboard
  * Team
      * Create a team
      * Delete a team
      * Get a team
      * Retrieve all teams
      * Update a team
  * Team Member
      * Add a member to a team
      * Retrieve all team members
      * Remove a member from a team
  * User
      * Delete a user from the current organization
      * Retrieve all users in the current organization
      * Update a user in the current organization

  ## Templates and examples

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

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

properties_schema:
  [
    {
      "displayName": "Resource",
      "name": "resource",
      "type": "options",
      "default": "dashboard",
      "options": [
        {
          "name": "Dashboard",
          "value": "dashboard"
        },
        {
          "name": "Team",
          "value": "team"
        },
        {
          "name": "Team Member",
          "value": "teamMember"
        },
        {
          "name": "User",
          "value": "user"
        }
      ],
      "noDataExpression": true
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "description": "Create a dashboard",
          "action": "Create a dashboard"
        },
        {
          "name": "Delete",
          "value": "delete",
          "description": "Delete a dashboard",
          "action": "Delete a dashboard"
        },
        {
          "name": "Get",
          "value": "get",
          "description": "Get a dashboard",
          "action": "Get a dashboard"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "description": "Get many dashboards",
          "action": "Get many dashboards"
        },
        {
          "name": "Update",
          "value": "update",
          "description": "Update a dashboard",
          "action": "Update a dashboard"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "dashboard"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Title",
      "name": "title",
      "type": "string",
      "default": "",
      "description": "Title of the dashboard to create",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "dashboard"
          ],
          "operation": [
            "create"
          ]
        }
      }
    },
    {
      "displayName": "Additional Fields",
      "name": "additionalFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Folder Name or ID",
          "name": "folderId",
          "type": "options",
          "default": "",
          "description": "Folder to create the dashboard in - if the folder is unspecified, the dashboard will be saved to the General folder. Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>.",
          "typeOptions": {
            "loadOptionsMethod": "getFolders"
          }
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "dashboard"
          ],
          "operation": [
            "create"
          ]
        }
      }
    },
    {
      "displayName": "Dashboard UID or URL",
      "name": "dashboardUidOrUrl",
      "type": "string",
      "default": "",
      "description": "Unique alphabetic identifier or URL of the dashboard to delete",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "dashboard"
          ],
          "operation": [
            "delete"
          ]
        }
      }
    },
    {
      "displayName": "Dashboard UID or URL",
      "name": "dashboardUidOrUrl",
      "type": "string",
      "default": "",
      "description": "Unique alphabetic identifier or URL of the dashboard to retrieve",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "dashboard"
          ],
          "operation": [
            "get"
          ]
        }
      }
    },
    {
      "displayName": "Return All",
      "name": "returnAll",
      "type": "boolean",
      "default": false,
      "description": "Whether to return all results or only up to a given limit",
      "displayOptions": {
        "show": {
          "resource": [
            "dashboard"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 50,
      "description": "Max number of results to return",
      "displayOptions": {
        "show": {
          "resource": [
            "dashboard"
          ],
          "operation": [
            "getAll"
          ],
          "returnAll": [
            false
          ]
        }
      },
      "typeOptions": {
        "minValue": 1,
        "maxValue": 100
      }
    },
    {
      "displayName": "Filters",
      "name": "filters",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Search Query",
          "name": "query",
          "type": "string",
          "default": ""
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "dashboard"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Dashboard UID or URL",
      "name": "dashboardUidOrUrl",
      "type": "string",
      "default": "",
      "description": "Unique alphabetic identifier or URL of the dashboard to update",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "dashboard"
          ],
          "operation": [
            "update"
          ]
        }
      }
    },
    {
      "displayName": "Update Fields",
      "name": "updateFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Folder Name or ID",
          "name": "folderId",
          "type": "options",
          "default": "",
          "description": "Folder to move the dashboard into - if the folder is unspecified, the dashboard will be saved to the General folder. Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>.",
          "typeOptions": {
            "loadOptionsMethod": "getFolders"
          }
        },
        {
          "displayName": "Title",
          "name": "title",
          "type": "string",
          "default": "",
          "description": "New title of the dashboard"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "dashboard"
          ],
          "operation": [
            "update"
          ]
        }
      }
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "description": "Create a team",
          "action": "Create a team"
        },
        {
          "name": "Delete",
          "value": "delete",
          "description": "Delete a team",
          "action": "Delete a team"
        },
        {
          "name": "Get",
          "value": "get",
          "description": "Get a team",
          "action": "Get a team"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "description": "Retrieve many teams",
          "action": "Get many teams"
        },
        {
          "name": "Update",
          "value": "update",
          "description": "Update a team",
          "action": "Update a team"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "team"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Name",
      "name": "name",
      "type": "string",
      "default": "",
      "description": "Name of the team to create",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "team"
          ],
          "operation": [
            "create"
          ]
        }
      }
    },
    {
      "displayName": "Additional Fields",
      "name": "additionalFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Email",
          "name": "email",
          "type": "string",
          "placeholder": "engineering@n8n.io",
          "default": "",
          "description": "Email of the team to create"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "team"
          ],
          "operation": [
            "create"
          ]
        }
      }
    },
    {
      "displayName": "Team ID",
      "name": "teamId",
      "type": "string",
      "default": "",
      "description": "ID of the team to delete",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "team"
          ],
          "operation": [
            "delete"
          ]
        }
      }
    },
    {
      "displayName": "Team ID",
      "name": "teamId",
      "type": "string",
      "default": "",
      "description": "ID of the team to retrieve",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "team"
          ],
          "operation": [
            "get"
          ]
        }
      }
    },
    {
      "displayName": "Return All",
      "name": "returnAll",
      "type": "boolean",
      "default": false,
      "description": "Whether to return all results or only up to a given limit",
      "displayOptions": {
        "show": {
          "resource": [
            "team"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 50,
      "description": "Max number of results to return",
      "displayOptions": {
        "show": {
          "resource": [
            "team"
          ],
          "operation": [
            "getAll"
          ],
          "returnAll": [
            false
          ]
        }
      },
      "typeOptions": {
        "minValue": 1
      }
    },
    {
      "displayName": "Filters",
      "name": "filters",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Name",
          "name": "name",
          "type": "string",
          "default": "",
          "description": "Name of the team to filter by"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "team"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Team ID",
      "name": "teamId",
      "type": "string",
      "default": "",
      "description": "ID of the team to update",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "team"
          ],
          "operation": [
            "update"
          ]
        }
      }
    },
    {
      "displayName": "Update Fields",
      "name": "updateFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Email",
          "name": "email",
          "type": "string",
          "placeholder": "engineering@n8n.io",
          "default": "",
          "description": "Email of the team to update"
        },
        {
          "displayName": "Name",
          "name": "name",
          "type": "string",
          "placeholder": "Engineering Team",
          "default": "",
          "description": "Name of the team to update"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "team"
          ],
          "operation": [
            "update"
          ]
        }
      }
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "add",
      "options": [
        {
          "name": "Add",
          "value": "add",
          "description": "Add a member to a team",
          "action": "Add a team member"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "description": "Retrieve many team members",
          "action": "Get many team members"
        },
        {
          "name": "Remove",
          "value": "remove",
          "description": "Remove a member from a team",
          "action": "Remove a team member"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "teamMember"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "User Name or ID",
      "name": "userId",
      "type": "options",
      "default": "",
      "description": "User to add to a team. Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>.",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "teamMember"
          ],
          "operation": [
            "add"
          ]
        }
      },
      "typeOptions": {
        "loadOptionsMethod": "getUsers"
      }
    },
    {
      "displayName": "Team Name or ID",
      "name": "teamId",
      "type": "options",
      "default": "",
      "description": "Team to add the user to. Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>.",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "teamMember"
          ],
          "operation": [
            "add"
          ]
        }
      },
      "typeOptions": {
        "loadOptionsMethod": "getTeams"
      }
    },
    {
      "displayName": "User Name or ID",
      "name": "memberId",
      "type": "options",
      "default": "",
      "description": "User to remove from the team. Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>.",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "teamMember"
          ],
          "operation": [
            "remove"
          ]
        }
      },
      "typeOptions": {
        "loadOptionsMethod": "getUsers"
      }
    },
    {
      "displayName": "Team Name or ID",
      "name": "teamId",
      "type": "options",
      "default": "",
      "description": "Team to remove the user from. Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>.",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "teamMember"
          ],
          "operation": [
            "remove"
          ]
        }
      },
      "typeOptions": {
        "loadOptionsMethod": "getTeams"
      }
    },
    {
      "displayName": "Team Name or ID",
      "name": "teamId",
      "type": "options",
      "default": "",
      "description": "Team to retrieve all members from. Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>.",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "teamMember"
          ],
          "operation": [
            "getAll"
          ]
        }
      },
      "typeOptions": {
        "loadOptionsMethod": "getTeams"
      }
    },
    {
      "displayName": "Return All",
      "name": "returnAll",
      "type": "boolean",
      "default": false,
      "description": "Whether to return all results or only up to a given limit",
      "displayOptions": {
        "show": {
          "resource": [
            "teamMember"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 50,
      "description": "Max number of results to return",
      "displayOptions": {
        "show": {
          "resource": [
            "teamMember"
          ],
          "operation": [
            "getAll"
          ],
          "returnAll": [
            false
          ]
        }
      },
      "typeOptions": {
        "minValue": 1
      }
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Delete",
          "value": "delete",
          "description": "Delete a user from the current organization",
          "action": "Delete a user"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "description": "Retrieve many users in the current organization",
          "action": "Get many users"
        },
        {
          "name": "Update",
          "value": "update",
          "description": "Update a user in the current organization",
          "action": "Update a user"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "User ID",
      "name": "userId",
      "type": "string",
      "default": "",
      "description": "ID of the user to update",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ],
          "operation": [
            "update"
          ]
        }
      }
    },
    {
      "displayName": "Update Fields",
      "name": "updateFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Role",
          "name": "role",
          "type": "options",
          "default": "Admin",
          "description": "New role for the user",
          "options": [
            {
              "name": "Admin",
              "value": "Admin"
            },
            {
              "name": "Editor",
              "value": "Editor"
            },
            {
              "name": "Viewer",
              "value": "Viewer"
            }
          ]
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ],
          "operation": [
            "update"
          ]
        }
      }
    },
    {
      "displayName": "User ID",
      "name": "userId",
      "type": "string",
      "default": "",
      "description": "ID of the user to delete",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ],
          "operation": [
            "delete"
          ]
        }
      }
    },
    {
      "displayName": "Return All",
      "name": "returnAll",
      "type": "boolean",
      "default": false,
      "description": "Whether to return all results or only up to a given limit",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 50,
      "description": "Max number of results to return",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ],
          "operation": [
            "getAll"
          ],
          "returnAll": [
            false
          ]
        }
      },
      "typeOptions": {
        "minValue": 1
      }
    }
  ]

operations:
  [
    {
      "operation": "create",
      "name": "Create",
      "description": "Create a dashboard"
    },
    {
      "operation": "delete",
      "name": "Delete",
      "description": "Delete a dashboard"
    },
    {
      "operation": "get",
      "name": "Get",
      "description": "Get a dashboard"
    },
    {
      "operation": "getAll",
      "name": "Get Many",
      "description": "Get many dashboards"
    },
    {
      "operation": "update",
      "name": "Update",
      "description": "Update a dashboard"
    }
  ]


node_type: nodes-base.graphqlTool
package_name: n8n-nodes-base
display_name: GraphQL Tool
description: Makes a GraphQL request and returns the received data (AI Tool variant for use with AI Agents)
category: input
development_style: programmatic
version: 1.1
operations: []
outputs:
  [
  {
  "type": "ai_tool",
  "displayName": "Tool"
  }
  ]

output_names:
  [
  "Tool"
  ]

updated_at: 2026-03-14 12:15:53
tool_variant_of: nodes-base.graphql
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: GraphQL
  description: Documentation for the GraphQL node in n8n, a workflow automation platform. Includes guidance on usage, and links to examples.
  contentType: [integration, reference]
  priority: medium
  ---

  # GraphQL

  [GraphQL](https://graphql.org/){:target=_blank .external-link} is an open-source data query and manipulation language for APIs, and a runtime for fulfilling queries with existing data. Use the GraphQL node to query a GraphQL endpoint.

  ## Node parameters

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

  ### Authentication

  Select the type of authentication to use.

  If you select anything other than **None**, the **Credential for <selected-auth-type>** parameter appears for you to select an existing or create a new authentication credential for that authentication type.

  ### HTTP Request Method

  Select the underlying HTTP Request method the node should use. Choose from:

  * **GET**
  * **POST**: If you select this method, you'll also need to select the **Request Format** the node should use for the query payload. Choose from:
      * **GraphQL (Raw)**
      * **JSON**

  ### Endpoint

  Enter the GraphQL Endpoint you'd like to hit.

  ### Ignore SSL Issues

  When you turn on this control, n8n ignores SSL certificate validation failure.

  ### Query

  Enter the GraphQL query you want to execute.

  Refer to [Related Resources](#related-resources) for information on writing your query.

  ### Response Format

  Select the format you'd like to receive query results in. Choose between:

  * **JSON**
  * **String**: If you select this format, enter a **Response Data Property Name** to define the property the string is written to.

  ## Headers

  Enter any **Headers** you want to pass as part of the query as **Name** / **Value** pairs.

  ## Templates and examples

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

  ## Related resources

  To use the GraphQL node, you need to understand GraphQL query language. GraphQL have their own [Introduction to GraphQL](https://graphql.org/learn/){:target=_blank .external-link} tutorial.

properties_schema:
  [
    {
      "displayName": "Tool Description",
      "name": "toolDescription",
      "type": "string",
      "default": "",
      "required": false,
      "description": "Description for the AI to understand what this tool does and when to use it",
      "typeOptions": {
        "rows": 3
      },
      "placeholder": "e.g., Use this tool to interact with GraphQL"
    },
    {
      "displayName": "Authentication",
      "name": "authentication",
      "type": "options",
      "default": "none",
      "description": "The way to authenticate",
      "options": [
        {
          "name": "Basic Auth",
          "value": "basicAuth"
        },
        {
          "name": "Custom Auth",
          "value": "customAuth"
        },
        {
          "name": "Digest Auth",
          "value": "digestAuth"
        },
        {
          "name": "Header Auth",
          "value": "headerAuth"
        },
        {
          "name": "None",
          "value": "none"
        },
        {
          "name": "OAuth1",
          "value": "oAuth1"
        },
        {
          "name": "OAuth2",
          "value": "oAuth2"
        },
        {
          "name": "Query Auth",
          "value": "queryAuth"
        }
      ]
    },
    {
      "displayName": "HTTP Request Method",
      "name": "requestMethod",
      "type": "options",
      "default": "POST",
      "description": "The underlying HTTP request method to use",
      "options": [
        {
          "name": "GET",
          "value": "GET"
        },
        {
          "name": "POST",
          "value": "POST"
        }
      ]
    },
    {
      "displayName": "Endpoint",
      "name": "endpoint",
      "type": "string",
      "default": "",
      "description": "The GraphQL endpoint",
      "required": true
    },
    {
      "displayName": "Ignore SSL Issues (Insecure)",
      "name": "allowUnauthorizedCerts",
      "type": "boolean",
      "default": false,
      "description": "Whether to download the response even if SSL certificate validation is not possible"
    },
    {
      "displayName": "Request Format",
      "name": "requestFormat",
      "type": "options",
      "default": "graphql",
      "description": "The format for the query payload",
      "options": [
        {
          "name": "GraphQL (Raw)",
          "value": "graphql"
        },
        {
          "name": "JSON",
          "value": "json"
        }
      ],
      "required": true,
      "displayOptions": {
        "show": {
          "requestMethod": [
            "POST"
          ],
          "@version": [
            1
          ]
        }
      }
    },
    {
      "displayName": "Request Format",
      "name": "requestFormat",
      "type": "options",
      "default": "json",
      "description": "The request format for the query payload",
      "options": [
        {
          "name": "JSON (Recommended)",
          "value": "json",
          "description": "JSON object with query, variables, and operationName properties. The standard and most widely supported format for GraphQL requests."
        },
        {
          "name": "GraphQL (Raw)",
          "value": "graphql",
          "description": "Raw GraphQL query string. Not all servers support this format. Use JSON for better compatibility."
        }
      ],
      "required": true,
      "displayOptions": {
        "show": {
          "requestMethod": [
            "POST"
          ],
          "@version": [
            {
              "_cnd": {
                "gte": 1.1
              }
            }
          ]
        }
      }
    },
    {
      "displayName": "Query",
      "name": "query",
      "type": "string",
      "default": "",
      "description": "GraphQL query",
      "required": true,
      "typeOptions": {
        "rows": 6
      }
    },
    {
      "displayName": "Variables",
      "name": "variables",
      "type": "json",
      "default": "",
      "description": "Query variables as JSON object",
      "displayOptions": {
        "show": {
          "requestFormat": [
            "json"
          ],
          "requestMethod": [
            "POST"
          ]
        }
      }
    },
    {
      "displayName": "Operation Name",
      "name": "operationName",
      "type": "string",
      "default": "",
      "description": "Name of operation to execute",
      "displayOptions": {
        "show": {
          "requestFormat": [
            "json"
          ],
          "requestMethod": [
            "POST"
          ]
        }
      }
    },
    {
      "displayName": "Response Format",
      "name": "responseFormat",
      "type": "options",
      "default": "json",
      "description": "The format in which the data gets returned from the URL",
      "options": [
        {
          "name": "JSON",
          "value": "json"
        },
        {
          "name": "String",
          "value": "string"
        }
      ]
    },
    {
      "displayName": "Response Data Property Name",
      "name": "dataPropertyName",
      "type": "string",
      "default": "data",
      "description": "Name of the property to which to write the response data",
      "required": true,
      "displayOptions": {
        "show": {
          "responseFormat": [
            "string"
          ]
        }
      }
    },
    {
      "displayName": "Headers",
      "name": "headerParametersUi",
      "type": "fixedCollection",
      "default": {},
      "description": "The headers to send",
      "options": [
        {
          "name": "parameter",
          "displayName": "Header",
          "values": [
            {
              "displayName": "Name",
              "name": "name",
              "type": "string",
              "default": "",
              "description": "Name of the header"
            },
            {
              "displayName": "Value",
              "name": "value",
              "type": "string",
              "default": "",
              "description": "Value to set for the header"
            }
          ]
        }
      ],
      "typeOptions": {
        "multipleValues": true
      }
    }
  ]

credentials_required:
  [
    {
      "name": "httpBasicAuth",
      "required": true,
      "displayOptions": {
        "show": {
          "authentication": [
            "basicAuth"
          ]
        }
      }
    },
    {
      "name": "httpCustomAuth",
      "required": true,
      "displayOptions": {
        "show": {
          "authentication": [
            "customAuth"
          ]
        }
      }
    },
    {
      "name": "httpDigestAuth",
      "required": true,
      "displayOptions": {
        "show": {
          "authentication": [
            "digestAuth"
          ]
        }
      }
    },
    {
      "name": "httpHeaderAuth",
      "required": true,
      "displayOptions": {
        "show": {
          "authentication": [
            "headerAuth"
          ]
        }
      }
    },
    {
      "name": "httpQueryAuth",
      "required": true,
      "displayOptions": {
        "show": {
          "authentication": [
            "queryAuth"
          ]
        }
      }
    },
    {
      "name": "oAuth1Api",
      "required": true,
      "displayOptions": {
        "show": {
          "authentication": [
            "oAuth1"
          ]
        }
      }
    },
    {
      "name": "oAuth2Api",
      "required": true,
      "displayOptions": {
        "show": {
          "authentication": [
            "oAuth2"
          ]
        }
      }
    }
  ]


node_type: nodes-base.graphql
package_name: n8n-nodes-base
display_name: GraphQL
description: Makes a GraphQL request and returns the received data
category: input
development_style: programmatic
version: 1.1
operations: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-14 12:15:53
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: GraphQL
  description: Documentation for the GraphQL node in n8n, a workflow automation platform. Includes guidance on usage, and links to examples.
  contentType: [integration, reference]
  priority: medium
  ---

  # GraphQL

  [GraphQL](https://graphql.org/){:target=_blank .external-link} is an open-source data query and manipulation language for APIs, and a runtime for fulfilling queries with existing data. Use the GraphQL node to query a GraphQL endpoint.

  ## Node parameters

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

  ### Authentication

  Select the type of authentication to use.

  If you select anything other than **None**, the **Credential for <selected-auth-type>** parameter appears for you to select an existing or create a new authentication credential for that authentication type.

  ### HTTP Request Method

  Select the underlying HTTP Request method the node should use. Choose from:

  * **GET**
  * **POST**: If you select this method, you'll also need to select the **Request Format** the node should use for the query payload. Choose from:
      * **GraphQL (Raw)**
      * **JSON**

  ### Endpoint

  Enter the GraphQL Endpoint you'd like to hit.

  ### Ignore SSL Issues

  When you turn on this control, n8n ignores SSL certificate validation failure.

  ### Query

  Enter the GraphQL query you want to execute.

  Refer to [Related Resources](#related-resources) for information on writing your query.

  ### Response Format

  Select the format you'd like to receive query results in. Choose between:

  * **JSON**
  * **String**: If you select this format, enter a **Response Data Property Name** to define the property the string is written to.

  ## Headers

  Enter any **Headers** you want to pass as part of the query as **Name** / **Value** pairs.

  ## Templates and examples

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

  ## Related resources

  To use the GraphQL node, you need to understand GraphQL query language. GraphQL have their own [Introduction to GraphQL](https://graphql.org/learn/){:target=_blank .external-link} tutorial.

properties_schema:
  [
    {
      "displayName": "Authentication",
      "name": "authentication",
      "type": "options",
      "default": "none",
      "description": "The way to authenticate",
      "options": [
        {
          "name": "Basic Auth",
          "value": "basicAuth"
        },
        {
          "name": "Custom Auth",
          "value": "customAuth"
        },
        {
          "name": "Digest Auth",
          "value": "digestAuth"
        },
        {
          "name": "Header Auth",
          "value": "headerAuth"
        },
        {
          "name": "None",
          "value": "none"
        },
        {
          "name": "OAuth1",
          "value": "oAuth1"
        },
        {
          "name": "OAuth2",
          "value": "oAuth2"
        },
        {
          "name": "Query Auth",
          "value": "queryAuth"
        }
      ]
    },
    {
      "displayName": "HTTP Request Method",
      "name": "requestMethod",
      "type": "options",
      "default": "POST",
      "description": "The underlying HTTP request method to use",
      "options": [
        {
          "name": "GET",
          "value": "GET"
        },
        {
          "name": "POST",
          "value": "POST"
        }
      ]
    },
    {
      "displayName": "Endpoint",
      "name": "endpoint",
      "type": "string",
      "default": "",
      "description": "The GraphQL endpoint",
      "required": true
    },
    {
      "displayName": "Ignore SSL Issues (Insecure)",
      "name": "allowUnauthorizedCerts",
      "type": "boolean",
      "default": false,
      "description": "Whether to download the response even if SSL certificate validation is not possible"
    },
    {
      "displayName": "Request Format",
      "name": "requestFormat",
      "type": "options",
      "default": "graphql",
      "description": "The format for the query payload",
      "options": [
        {
          "name": "GraphQL (Raw)",
          "value": "graphql"
        },
        {
          "name": "JSON",
          "value": "json"
        }
      ],
      "required": true,
      "displayOptions": {
        "show": {
          "requestMethod": [
            "POST"
          ],
          "@version": [
            1
          ]
        }
      }
    },
    {
      "displayName": "Request Format",
      "name": "requestFormat",
      "type": "options",
      "default": "json",
      "description": "The request format for the query payload",
      "options": [
        {
          "name": "JSON (Recommended)",
          "value": "json",
          "description": "JSON object with query, variables, and operationName properties. The standard and most widely supported format for GraphQL requests."
        },
        {
          "name": "GraphQL (Raw)",
          "value": "graphql",
          "description": "Raw GraphQL query string. Not all servers support this format. Use JSON for better compatibility."
        }
      ],
      "required": true,
      "displayOptions": {
        "show": {
          "requestMethod": [
            "POST"
          ],
          "@version": [
            {
              "_cnd": {
                "gte": 1.1
              }
            }
          ]
        }
      }
    },
    {
      "displayName": "Query",
      "name": "query",
      "type": "string",
      "default": "",
      "description": "GraphQL query",
      "required": true,
      "typeOptions": {
        "rows": 6
      }
    },
    {
      "displayName": "Variables",
      "name": "variables",
      "type": "json",
      "default": "",
      "description": "Query variables as JSON object",
      "displayOptions": {
        "show": {
          "requestFormat": [
            "json"
          ],
          "requestMethod": [
            "POST"
          ]
        }
      }
    },
    {
      "displayName": "Operation Name",
      "name": "operationName",
      "type": "string",
      "default": "",
      "description": "Name of operation to execute",
      "displayOptions": {
        "show": {
          "requestFormat": [
            "json"
          ],
          "requestMethod": [
            "POST"
          ]
        }
      }
    },
    {
      "displayName": "Response Format",
      "name": "responseFormat",
      "type": "options",
      "default": "json",
      "description": "The format in which the data gets returned from the URL",
      "options": [
        {
          "name": "JSON",
          "value": "json"
        },
        {
          "name": "String",
          "value": "string"
        }
      ]
    },
    {
      "displayName": "Response Data Property Name",
      "name": "dataPropertyName",
      "type": "string",
      "default": "data",
      "description": "Name of the property to which to write the response data",
      "required": true,
      "displayOptions": {
        "show": {
          "responseFormat": [
            "string"
          ]
        }
      }
    },
    {
      "displayName": "Headers",
      "name": "headerParametersUi",
      "type": "fixedCollection",
      "default": {},
      "description": "The headers to send",
      "options": [
        {
          "name": "parameter",
          "displayName": "Header",
          "values": [
            {
              "displayName": "Name",
              "name": "name",
              "type": "string",
              "default": "",
              "description": "Name of the header"
            },
            {
              "displayName": "Value",
              "name": "value",
              "type": "string",
              "default": "",
              "description": "Value to set for the header"
            }
          ]
        }
      ],
      "typeOptions": {
        "multipleValues": true
      }
    }
  ]

credentials_required:
  [
    {
      "name": "httpBasicAuth",
      "required": true,
      "displayOptions": {
        "show": {
          "authentication": [
            "basicAuth"
          ]
        }
      }
    },
    {
      "name": "httpCustomAuth",
      "required": true,
      "displayOptions": {
        "show": {
          "authentication": [
            "customAuth"
          ]
        }
      }
    },
    {
      "name": "httpDigestAuth",
      "required": true,
      "displayOptions": {
        "show": {
          "authentication": [
            "digestAuth"
          ]
        }
      }
    },
    {
      "name": "httpHeaderAuth",
      "required": true,
      "displayOptions": {
        "show": {
          "authentication": [
            "headerAuth"
          ]
        }
      }
    },
    {
      "name": "httpQueryAuth",
      "required": true,
      "displayOptions": {
        "show": {
          "authentication": [
            "queryAuth"
          ]
        }
      }
    },
    {
      "name": "oAuth1Api",
      "required": true,
      "displayOptions": {
        "show": {
          "authentication": [
            "oAuth1"
          ]
        }
      }
    },
    {
      "name": "oAuth2Api",
      "required": true,
      "displayOptions": {
        "show": {
          "authentication": [
            "oAuth2"
          ]
        }
      }
    }
  ]


node_type: nodes-base.gristTool
package_name: n8n-nodes-base
display_name: Grist Tool
description: Consume the Grist API (AI Tool variant for use with AI Agents)
category: input
development_style: programmatic
version: 1
credentials_required:
  [
  {
  "name": "gristApi",
  "required": true,
  "testedBy": "gristApiTest"
  }
  ]

outputs:
  [
  {
  "type": "ai_tool",
  "displayName": "Tool"
  }
  ]

output_names:
  [
  "Tool"
  ]

updated_at: 2026-03-14 12:15:53
tool_variant_of: nodes-base.grist
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Grist node documentation
  description: Learn how to use the Grist node in n8n. Follow technical documentation to integrate Grist node into your workflows.
  contentType: [integration, reference]
  ---

  # Grist node

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

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

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

  ## Operations

  * Create rows in a table
  * Delete rows from a table
  * Read rows from a table
  * Update rows in a table

  ## Templates and examples

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

  ## Get the Row ID

  To update or delete a particular record, you need the Row ID. There are two ways to get the Row ID:

  **Create a Row ID column in Grist**

  Create a new column in your Grist table with the formula `$id`.

  **Use the Get All operation**

  The **Get All** operation returns the Row ID of each record along with the fields.
   
  You can get it with the expression `{{$node["GristNodeName"].json["id"]}}`.


  ## Filter records when using the Get All operation

  - Select **Add Option** and select **Filter** from the dropdown list.
  - You can add filters for any number of columns. The result will only include records which match all the columns.
  - For each column, you can enter any number of values separated by commas. The result will include records which match any of the values for that column.

properties_schema:
  [
    {
      "displayName": "Tool Description",
      "name": "toolDescription",
      "type": "string",
      "default": "",
      "required": false,
      "description": "Description for the AI to understand what this tool does and when to use it",
      "typeOptions": {
        "rows": 3
      },
      "placeholder": "e.g., Use this tool to interact with Grist"
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create Row",
          "value": "create",
          "description": "Create rows in a table",
          "action": "Create rows in a table"
        },
        {
          "name": "Delete Row",
          "value": "delete",
          "description": "Delete rows from a table",
          "action": "Delete rows from a table"
        },
        {
          "name": "Get Many Rows",
          "value": "getAll",
          "description": "Read rows from a table",
          "action": "Read rows from a table"
        },
        {
          "name": "Update Row",
          "value": "update",
          "description": "Update rows in a table",
          "action": "Update rows in a table"
        }
      ],
      "noDataExpression": true
    },
    {
      "displayName": "Document ID",
      "name": "docId",
      "type": "string",
      "default": "",
      "description": "In your document, click your profile icon, then Document Settings, then copy the value under \"This document's ID\"",
      "required": true
    },
    {
      "displayName": "Table ID",
      "name": "tableId",
      "type": "string",
      "default": "",
      "description": "ID of table to operate on. If unsure, look at the Code View.",
      "required": true
    },
    {
      "displayName": "Row ID",
      "name": "rowId",
      "type": "string",
      "default": "",
      "description": "ID of the row to delete, or comma-separated list of row IDs to delete",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "delete"
          ]
        }
      }
    },
    {
      "displayName": "Return All",
      "name": "returnAll",
      "type": "boolean",
      "default": false,
      "description": "Whether to return all results or only up to a given limit",
      "displayOptions": {
        "show": {
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 50,
      "description": "Max number of results to return",
      "displayOptions": {
        "show": {
          "operation": [
            "getAll"
          ],
          "returnAll": [
            false
          ]
        }
      },
      "typeOptions": {
        "minValue": 1
      }
    },
    {
      "displayName": "Additional Options",
      "name": "additionalOptions",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Filter",
          "name": "filter",
          "placeholder": "Add Filter",
          "description": "Only return rows matching all of the given filters. For complex filters, create a formula column and filter for the value \"true\".",
          "type": "fixedCollection",
          "typeOptions": {
            "multipleValues": true
          },
          "default": {},
          "options": [
            {
              "displayName": "Filter Properties",
              "name": "filterProperties",
              "values": [
                {
                  "displayName": "Column Name or ID",
                  "name": "field",
                  "type": "options",
                  "typeOptions": {
                    "loadOptionsDependsOn": [
                      "docId",
                      "tableId"
                    ],
                    "loadOptionsMethod": "getTableColumns"
                  },
                  "default": "",
                  "description": "Column to apply the filter in. Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>.",
                  "required": true
                },
                {
                  "displayName": "Values",
                  "name": "values",
                  "type": "string",
                  "default": "",
                  "description": "Comma-separated list of values to search for in the filtered column"
                }
              ]
            }
          ]
        },
        {
          "displayName": "Sort Order",
          "name": "sort",
          "placeholder": "Add Field",
          "type": "fixedCollection",
          "typeOptions": {
            "multipleValues": true
          },
          "default": {},
          "options": [
            {
              "displayName": "Sort Properties",
              "name": "sortProperties",
              "values": [
                {
                  "displayName": "Column Name or ID",
                  "name": "field",
                  "type": "options",
                  "typeOptions": {
                    "loadOptionsDependsOn": [
                      "docId",
                      "tableId"
                    ],
                    "loadOptionsMethod": "getTableColumns"
                  },
                  "default": "",
                  "required": true,
                  "description": "Column to sort on. Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>."
                },
                {
                  "displayName": "Direction",
                  "name": "direction",
                  "type": "options",
                  "options": [
                    {
                      "name": "Ascending",
                      "value": "asc"
                    },
                    {
                      "name": "Descending",
                      "value": "desc"
                    }
                  ],
                  "default": "asc",
                  "description": "Direction to sort in"
                }
              ]
            }
          ]
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Row ID",
      "name": "rowId",
      "type": "string",
      "default": "",
      "description": "ID of the row to update",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "update"
          ]
        }
      }
    },
    {
      "displayName": "Data to Send",
      "name": "dataToSend",
      "type": "options",
      "default": "defineInNode",
      "description": "Whether to insert the input data this node receives in the new row",
      "options": [
        {
          "name": "Auto-Map Input Data to Columns",
          "value": "autoMapInputs",
          "description": "Use when node input properties match destination column names"
        },
        {
          "name": "Define Below for Each Column",
          "value": "defineInNode",
          "description": "Set the value for each destination column"
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "create",
            "update"
          ]
        }
      }
    },
    {
      "displayName": "Inputs to Ignore",
      "name": "inputsToIgnore",
      "type": "string",
      "default": "",
      "description": "List of input properties to avoid sending, separated by commas. Leave empty to send all properties.",
      "displayOptions": {
        "show": {
          "operation": [
            "create",
            "update"
          ],
          "dataToSend": [
            "autoMapInputs"
          ]
        }
      }
    },
    {
      "displayName": "Fields to Send",
      "name": "fieldsToSend",
      "type": "fixedCollection",
      "default": {},
      "options": [
        {
          "displayName": "Properties",
          "name": "properties",
          "values": [
            {
              "displayName": "Column Name or ID",
              "name": "fieldId",
              "description": "Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>",
              "type": "options",
              "typeOptions": {
                "loadOptionsDependsOn": [
                  "tableId"
                ],
                "loadOptionsMethod": "getTableColumns"
              },
              "default": ""
            },
            {
              "displayName": "Field Value",
              "name": "fieldValue",
              "type": "string",
              "default": ""
            }
          ]
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "create",
            "update"
          ],
          "dataToSend": [
            "defineInNode"
          ]
        }
      },
      "typeOptions": {
        "multipleValueButtonText": "Add Field to Send",
        "multipleValues": true
      }
    }
  ]

operations:
  [
    {
      "operation": "create",
      "name": "Create Row",
      "description": "Create rows in a table"
    },
    {
      "operation": "delete",
      "name": "Delete Row",
      "description": "Delete rows from a table"
    },
    {
      "operation": "getAll",
      "name": "Get Many Rows",
      "description": "Read rows from a table"
    },
    {
      "operation": "update",
      "name": "Update Row",
      "description": "Update rows in a table"
    }
  ]


node_type: nodes-base.grist
package_name: n8n-nodes-base
display_name: Grist
description: Consume the Grist API
category: input
development_style: programmatic
version: 1
credentials_required:
  [
  {
  "name": "gristApi",
  "required": true,
  "testedBy": "gristApiTest"
  }
  ]

outputs:
  [
  "main"
  ]

updated_at: 2026-03-14 12:15:53
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Grist node documentation
  description: Learn how to use the Grist node in n8n. Follow technical documentation to integrate Grist node into your workflows.
  contentType: [integration, reference]
  ---

  # Grist node

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

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

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

  ## Operations

  * Create rows in a table
  * Delete rows from a table
  * Read rows from a table
  * Update rows in a table

  ## Templates and examples

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

  ## Get the Row ID

  To update or delete a particular record, you need the Row ID. There are two ways to get the Row ID:

  **Create a Row ID column in Grist**

  Create a new column in your Grist table with the formula `$id`.

  **Use the Get All operation**

  The **Get All** operation returns the Row ID of each record along with the fields.
   
  You can get it with the expression `{{$node["GristNodeName"].json["id"]}}`.


  ## Filter records when using the Get All operation

  - Select **Add Option** and select **Filter** from the dropdown list.
  - You can add filters for any number of columns. The result will only include records which match all the columns.
  - For each column, you can enter any number of values separated by commas. The result will include records which match any of the values for that column.

properties_schema:
  [
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create Row",
          "value": "create",
          "description": "Create rows in a table",
          "action": "Create rows in a table"
        },
        {
          "name": "Delete Row",
          "value": "delete",
          "description": "Delete rows from a table",
          "action": "Delete rows from a table"
        },
        {
          "name": "Get Many Rows",
          "value": "getAll",
          "description": "Read rows from a table",
          "action": "Read rows from a table"
        },
        {
          "name": "Update Row",
          "value": "update",
          "description": "Update rows in a table",
          "action": "Update rows in a table"
        }
      ],
      "noDataExpression": true
    },
    {
      "displayName": "Document ID",
      "name": "docId",
      "type": "string",
      "default": "",
      "description": "In your document, click your profile icon, then Document Settings, then copy the value under \"This document's ID\"",
      "required": true
    },
    {
      "displayName": "Table ID",
      "name": "tableId",
      "type": "string",
      "default": "",
      "description": "ID of table to operate on. If unsure, look at the Code View.",
      "required": true
    },
    {
      "displayName": "Row ID",
      "name": "rowId",
      "type": "string",
      "default": "",
      "description": "ID of the row to delete, or comma-separated list of row IDs to delete",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "delete"
          ]
        }
      }
    },
    {
      "displayName": "Return All",
      "name": "returnAll",
      "type": "boolean",
      "default": false,
      "description": "Whether to return all results or only up to a given limit",
      "displayOptions": {
        "show": {
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 50,
      "description": "Max number of results to return",
      "displayOptions": {
        "show": {
          "operation": [
            "getAll"
          ],
          "returnAll": [
            false
          ]
        }
      },
      "typeOptions": {
        "minValue": 1
      }
    },
    {
      "displayName": "Additional Options",
      "name": "additionalOptions",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Filter",
          "name": "filter",
          "placeholder": "Add Filter",
          "description": "Only return rows matching all of the given filters. For complex filters, create a formula column and filter for the value \"true\".",
          "type": "fixedCollection",
          "typeOptions": {
            "multipleValues": true
          },
          "default": {},
          "options": [
            {
              "displayName": "Filter Properties",
              "name": "filterProperties",
              "values": [
                {
                  "displayName": "Column Name or ID",
                  "name": "field",
                  "type": "options",
                  "typeOptions": {
                    "loadOptionsDependsOn": [
                      "docId",
                      "tableId"
                    ],
                    "loadOptionsMethod": "getTableColumns"
                  },
                  "default": "",
                  "description": "Column to apply the filter in. Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>.",
                  "required": true
                },
                {
                  "displayName": "Values",
                  "name": "values",
                  "type": "string",
                  "default": "",
                  "description": "Comma-separated list of values to search for in the filtered column"
                }
              ]
            }
          ]
        },
        {
          "displayName": "Sort Order",
          "name": "sort",
          "placeholder": "Add Field",
          "type": "fixedCollection",
          "typeOptions": {
            "multipleValues": true
          },
          "default": {},
          "options": [
            {
              "displayName": "Sort Properties",
              "name": "sortProperties",
              "values": [
                {
                  "displayName": "Column Name or ID",
                  "name": "field",
                  "type": "options",
                  "typeOptions": {
                    "loadOptionsDependsOn": [
                      "docId",
                      "tableId"
                    ],
                    "loadOptionsMethod": "getTableColumns"
                  },
                  "default": "",
                  "required": true,
                  "description": "Column to sort on. Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>."
                },
                {
                  "displayName": "Direction",
                  "name": "direction",
                  "type": "options",
                  "options": [
                    {
                      "name": "Ascending",
                      "value": "asc"
                    },
                    {
                      "name": "Descending",
                      "value": "desc"
                    }
                  ],
                  "default": "asc",
                  "description": "Direction to sort in"
                }
              ]
            }
          ]
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Row ID",
      "name": "rowId",
      "type": "string",
      "default": "",
      "description": "ID of the row to update",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "update"
          ]
        }
      }
    },
    {
      "displayName": "Data to Send",
      "name": "dataToSend",
      "type": "options",
      "default": "defineInNode",
      "description": "Whether to insert the input data this node receives in the new row",
      "options": [
        {
          "name": "Auto-Map Input Data to Columns",
          "value": "autoMapInputs",
          "description": "Use when node input properties match destination column names"
        },
        {
          "name": "Define Below for Each Column",
          "value": "defineInNode",
          "description": "Set the value for each destination column"
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "create",
            "update"
          ]
        }
      }
    },
    {
      "displayName": "Inputs to Ignore",
      "name": "inputsToIgnore",
      "type": "string",
      "default": "",
      "description": "List of input properties to avoid sending, separated by commas. Leave empty to send all properties.",
      "displayOptions": {
        "show": {
          "operation": [
            "create",
            "update"
          ],
          "dataToSend": [
            "autoMapInputs"
          ]
        }
      }
    },
    {
      "displayName": "Fields to Send",
      "name": "fieldsToSend",
      "type": "fixedCollection",
      "default": {},
      "options": [
        {
          "displayName": "Properties",
          "name": "properties",
          "values": [
            {
              "displayName": "Column Name or ID",
              "name": "fieldId",
              "description": "Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>",
              "type": "options",
              "typeOptions": {
                "loadOptionsDependsOn": [
                  "tableId"
                ],
                "loadOptionsMethod": "getTableColumns"
              },
              "default": ""
            },
            {
              "displayName": "Field Value",
              "name": "fieldValue",
              "type": "string",
              "default": ""
            }
          ]
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "create",
            "update"
          ],
          "dataToSend": [
            "defineInNode"
          ]
        }
      },
      "typeOptions": {
        "multipleValueButtonText": "Add Field to Send",
        "multipleValues": true
      }
    }
  ]

operations:
  [
    {
      "operation": "create",
      "name": "Create Row",
      "description": "Create rows in a table"
    },
    {
      "operation": "delete",
      "name": "Delete Row",
      "description": "Delete rows from a table"
    },
    {
      "operation": "getAll",
      "name": "Get Many Rows",
      "description": "Read rows from a table"
    },
    {
      "operation": "update",
      "name": "Update Row",
      "description": "Update rows in a table"
    }
  ]


node_type: nodes-base.gumroadTrigger
package_name: n8n-nodes-base
display_name: Gumroad Trigger
description: Handle Gumroad events via webhooks
category: trigger
development_style: programmatic
version: 1
operations: []
credentials_required:
  [
  {
  "name": "gumroadApi",
  "required": true
  }
  ]

outputs:
  [
  "main"
  ]

updated_at: 2026-03-14 12:15:53
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Gumroad Trigger node documentation
  description: Learn how to use the Gumroad Trigger node in n8n. Follow technical documentation to integrate Gumroad Trigger node into your workflows.
  contentType: [integration, reference]
  ---

  # Gumroad Trigger node

  [Gumroad](https://gumroad.com){:target=_blank .external-link} is an online platform that enables creators to sell products directly to consumers.

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

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

properties_schema:
  [
    {
      "displayName": "Resource",
      "name": "resource",
      "type": "options",
      "default": "",
      "description": "The resource is gonna fire the event",
      "options": [
        {
          "name": "Cancellation",
          "value": "cancellation",
          "description": "When subscribed to this resource, you will be notified of cancellations of the user's subscribers"
        },
        {
          "name": "Dispute",
          "value": "dispute",
          "description": "When subscribed to this resource, you will be notified of the disputes raised against user's sales"
        },
        {
          "name": "Dispute Won",
          "value": "dispute_won",
          "description": "When subscribed to this resource, you will be notified of the sale disputes won"
        },
        {
          "name": "Refund",
          "value": "refund",
          "description": "When subscribed to this resource, you will be notified of refunds to the user's sales"
        },
        {
          "name": "Sale",
          "value": "sale",
          "description": "When subscribed to this resource, you will be notified of the user's sales"
        }
      ],
      "required": true,
      "noDataExpression": true
    }
  ]


node_type: nodes-base.hackerNewsTool
package_name: n8n-nodes-base
display_name: Hacker News Tool
description: Consume Hacker News API (AI Tool variant for use with AI Agents)
category: transform
development_style: programmatic
version: 1
operations:
  [
  {
  "operation": "getAll",
  "name": "Get Many",
  "description": "Get many items"
  }
  ]

credentials_required: []
outputs:
  [
  {
  "type": "ai_tool",
  "displayName": "Tool"
  }
  ]

output_names:
  [
  "Tool"
  ]

updated_at: 2026-03-14 12:15:53
tool_variant_of: nodes-base.hackerNews
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Hacker News node documentation
  description: Learn how to use the Hacker News node in n8n. Follow technical documentation to integrate Hacker News node into your workflows.
  contentType: [integration, reference]
  priority: medium
  ---

  # Hacker News node

  Use the Hacker News node to automate work in Hacker News, and integrate Hacker News with other applications. n8n has built-in support for a wide range of Hacker News features, including getting articles, and users. 

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

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

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

  ## Operations

  * All
      * Get all items
  * Article
      * Get a Hacker News article
  * User
      * Get a Hacker News user

  ## Templates and examples

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

properties_schema:
  [
    {
      "displayName": "Tool Description",
      "name": "toolDescription",
      "type": "string",
      "default": "",
      "required": false,
      "description": "Description for the AI to understand what this tool does and when to use it",
      "typeOptions": {
        "rows": 3
      },
      "placeholder": "e.g., Use this tool to interact with Hacker News"
    },
    {
      "displayName": "Resource",
      "name": "resource",
      "type": "options",
      "default": "article",
      "options": [
        {
          "name": "All",
          "value": "all"
        },
        {
          "name": "Article",
          "value": "article"
        },
        {
          "name": "User",
          "value": "user"
        }
      ],
      "noDataExpression": true
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "description": "Get many items",
          "action": "Get many items"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "all"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "description": "Get a Hacker News article",
          "action": "Get an article"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "article"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "description": "Get a Hacker News user",
          "action": "Get a user"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Article ID",
      "name": "articleId",
      "type": "string",
      "default": "",
      "description": "The ID of the Hacker News article to be returned",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "article"
          ],
          "operation": [
            "get"
          ]
        }
      }
    },
    {
      "displayName": "Username",
      "name": "username",
      "type": "string",
      "default": "",
      "description": "The Hacker News user to be returned",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ],
          "operation": [
            "get"
          ]
        }
      }
    },
    {
      "displayName": "Return All",
      "name": "returnAll",
      "type": "boolean",
      "default": false,
      "description": "Whether to return all results or only up to a given limit",
      "displayOptions": {
        "show": {
          "resource": [
            "all"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 100,
      "description": "Max number of results to return",
      "displayOptions": {
        "show": {
          "resource": [
            "all"
          ],
          "operation": [
            "getAll"
          ],
          "returnAll": [
            false
          ]
        }
      },
      "typeOptions": {
        "minValue": 1
      }
    },
    {
      "displayName": "Additional Fields",
      "name": "additionalFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Include Comments",
          "name": "includeComments",
          "type": "boolean",
          "default": false,
          "description": "Whether to include all the comments in a Hacker News article"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "article"
          ],
          "operation": [
            "get"
          ]
        }
      }
    },
    {
      "displayName": "Additional Fields",
      "name": "additionalFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Keyword",
          "name": "keyword",
          "type": "string",
          "default": "",
          "description": "The keyword for filtering the results of the query"
        },
        {
          "displayName": "Tags",
          "name": "tags",
          "type": "multiOptions",
          "options": [
            {
              "name": "Ask HN",
              "value": "ask_hn",
              "description": "Returns query results filtered by Ask HN tag"
            },
            {
              "name": "Comment",
              "value": "comment",
              "description": "Returns query results filtered by comment tag"
            },
            {
              "name": "Front Page",
              "value": "front_page",
              "description": "Returns query results filtered by Front Page tag"
            },
            {
              "name": "Poll",
              "value": "poll",
              "description": "Returns query results filtered by poll tag"
            },
            {
              "name": "Show HN",
              "value": "show_hn",
              "description": "Returns query results filtered by Show HN tag"
            },
            {
              "name": "Story",
              "value": "story",
              "description": "Returns query results filtered by story tag"
            }
          ],
          "default": [],
          "description": "Tags for filtering the results of the query"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "all"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    }
  ]


node_type: nodes-base.hackerNews
package_name: n8n-nodes-base
display_name: Hacker News
description: Consume Hacker News API
category: transform
development_style: programmatic
version: 1
operations:
  [
  {
  "operation": "getAll",
  "name": "Get Many",
  "description": "Get many items"
  }
  ]

credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-03-14 12:15:53
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Hacker News node documentation
  description: Learn how to use the Hacker News node in n8n. Follow technical documentation to integrate Hacker News node into your workflows.
  contentType: [integration, reference]
  priority: medium
  ---

  # Hacker News node

  Use the Hacker News node to automate work in Hacker News, and integrate Hacker News with other applications. n8n has built-in support for a wide range of Hacker News features, including getting articles, and users. 

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

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

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

  ## Operations

  * All
      * Get all items
  * Article
      * Get a Hacker News article
  * User
      * Get a Hacker News user

  ## Templates and examples

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

properties_schema:
  [
    {
      "displayName": "Resource",
      "name": "resource",
      "type": "options",
      "default": "article",
      "options": [
        {
          "name": "All",
          "value": "all"
        },
        {
          "name": "Article",
          "value": "article"
        },
        {
          "name": "User",
          "value": "user"
        }
      ],
      "noDataExpression": true
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "description": "Get many items",
          "action": "Get many items"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "all"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "description": "Get a Hacker News article",
          "action": "Get an article"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "article"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "description": "Get a Hacker News user",
          "action": "Get a user"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Article ID",
      "name": "articleId",
      "type": "string",
      "default": "",
      "description": "The ID of the Hacker News article to be returned",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "article"
          ],
          "operation": [
            "get"
          ]
        }
      }
    },
    {
      "displayName": "Username",
      "name": "username",
      "type": "string",
      "default": "",
      "description": "The Hacker News user to be returned",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ],
          "operation": [
            "get"
          ]
        }
      }
    },
    {
      "displayName": "Return All",
      "name": "returnAll",
      "type": "boolean",
      "default": false,
      "description": "Whether to return all results or only up to a given limit",
      "displayOptions": {
        "show": {
          "resource": [
            "all"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 100,
      "description": "Max number of results to return",
      "displayOptions": {
        "show": {
          "resource": [
            "all"
          ],
          "operation": [
            "getAll"
          ],
          "returnAll": [
            false
          ]
        }
      },
      "typeOptions": {
        "minValue": 1
      }
    },
    {
      "displayName": "Additional Fields",
      "name": "additionalFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Include Comments",
          "name": "includeComments",
          "type": "boolean",
          "default": false,
          "description": "Whether to include all the comments in a Hacker News article"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "article"
          ],
          "operation": [
            "get"
          ]
        }
      }
    },
    {
      "displayName": "Additional Fields",
      "name": "additionalFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Keyword",
          "name": "keyword",
          "type": "string",
          "default": "",
          "description": "The keyword for filtering the results of the query"
        },
        {
          "displayName": "Tags",
          "name": "tags",
          "type": "multiOptions",
          "options": [
            {
              "name": "Ask HN",
              "value": "ask_hn",
              "description": "Returns query results filtered by Ask HN tag"
            },
            {
              "name": "Comment",
              "value": "comment",
              "description": "Returns query results filtered by comment tag"
            },
            {
              "name": "Front Page",
              "value": "front_page",
              "description": "Returns query results filtered by Front Page tag"
            },
            {
              "name": "Poll",
              "value": "poll",
              "description": "Returns query results filtered by poll tag"
            },
            {
              "name": "Show HN",
              "value": "show_hn",
              "description": "Returns query results filtered by Show HN tag"
            },
            {
              "name": "Story",
              "value": "story",
              "description": "Returns query results filtered by story tag"
            }
          ],
          "default": [],
          "description": "Tags for filtering the results of the query"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "all"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    }
  ]


node_type: nodes-base.haloPSATool
package_name: n8n-nodes-base
display_name: HaloPSA Tool
description: Consume HaloPSA API (AI Tool variant for use with AI Agents)
category: input
development_style: programmatic
version: 1
outputs:
  [
  {
  "type": "ai_tool",
  "displayName": "Tool"
  }
  ]

output_names:
  [
  "Tool"
  ]

updated_at: 2026-03-14 12:15:53
tool_variant_of: nodes-base.haloPSA
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: HaloPSA node documentation
  description: Learn how to use the HaloPSA node in n8n. Follow technical documentation to integrate HaloPSA node into your workflows.
  contentType: [integration, reference]
  ---

  # HaloPSA node

  Use the HaloPSA node to automate work in HaloPSA, and integrate HaloPSA with other applications. n8n has built-in support for a wide range of HaloPSA features, including creating, updating, deleting, and getting clients, sites and tickets. 

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

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

  ## Operations

  * Client
      * Create a client
      * Delete a client
      * Get a client
      * Get all clients
      * Update a client
  * Site
      * Create a site
      * Delete a site
      * Get a site
      * Get all sites
      * Update a site
  * Ticket
      * Create a ticket
      * Delete a ticket
      * Get a ticket
      * Get all tickets
      * Update a ticket
  * User
      * Create a user
      * Delete a user
      * Get a user
      * Get all users
      * Update a user

  ## Templates and examples

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

properties_schema:
  [
    {
      "displayName": "Tool Description",
      "name": "toolDescription",
      "type": "string",
      "default": "",
      "required": false,
      "description": "Description for the AI to understand what this tool does and when to use it",
      "typeOptions": {
        "rows": 3
      },
      "placeholder": "e.g., Use this tool to interact with HaloPSA"
    },
    {
      "displayName": "Resource",
      "name": "resource",
      "type": "options",
      "default": "client",
      "options": [
        {
          "name": "Client",
          "value": "client"
        },
        {
          "name": "Site",
          "value": "site"
        },
        {
          "name": "Ticket",
          "value": "ticket"
        },
        {
          "name": "User",
          "value": "user"
        }
      ],
      "required": true,
      "noDataExpression": true
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "description": "Create a client",
          "action": "Create a client"
        },
        {
          "name": "Delete",
          "value": "delete",
          "description": "Delete a client",
          "action": "Delete a client"
        },
        {
          "name": "Get",
          "value": "get",
          "description": "Get a client",
          "action": "Get a client"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "description": "Get many clients",
          "action": "Get many clients"
        },
        {
          "name": "Update",
          "value": "update",
          "description": "Update a client",
          "action": "Update a client"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "client"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Name",
      "name": "clientName",
      "type": "string",
      "default": "",
      "description": "Enter client name",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "client"
          ]
        }
      }
    },
    {
      "displayName": "Additional Fields",
      "name": "additionalFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Account Status",
          "name": "inactive",
          "type": "options",
          "default": false,
          "options": [
            {
              "name": "Active",
              "value": false
            },
            {
              "name": "Inactive",
              "value": true
            }
          ]
        },
        {
          "displayName": "Notes",
          "name": "notes",
          "type": "string",
          "default": ""
        },
        {
          "displayName": "VIP",
          "name": "is_vip",
          "type": "boolean",
          "default": false,
          "description": "Whether the client is VIP or not"
        },
        {
          "displayName": "Website",
          "name": "website",
          "type": "string",
          "default": ""
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "client"
          ]
        }
      }
    },
    {
      "displayName": "Client ID",
      "name": "clientId",
      "type": "string",
      "default": "",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "client"
          ],
          "operation": [
            "get",
            "delete"
          ]
        }
      }
    },
    {
      "displayName": "Simplify",
      "name": "simplify",
      "type": "boolean",
      "default": true,
      "description": "Whether to return a simplified version of the response instead of the raw data",
      "displayOptions": {
        "show": {
          "resource": [
            "client"
          ],
          "operation": [
            "get",
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Return All",
      "name": "returnAll",
      "type": "boolean",
      "default": false,
      "description": "Whether to return all results or only up to a given limit",
      "displayOptions": {
        "show": {
          "resource": [
            "client"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 50,
      "description": "Max number of results to return",
      "displayOptions": {
        "show": {
          "resource": [
            "client"
          ],
          "operation": [
            "getAll"
          ],
          "returnAll": [
            false
          ]
        }
      },
      "typeOptions": {
        "minValue": 1,
        "maxValue": 1000
      }
    },
    {
      "displayName": "Filters",
      "name": "filters",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Active Status",
          "name": "activeStatus",
          "type": "options",
          "default": "active",
          "options": [
            {
              "name": "Active Only",
              "value": "active",
              "description": "Whether to include active customers in the response"
            },
            {
              "name": "All",
              "value": "all",
              "description": "Whether to include active and inactive customers in the response"
            },
            {
              "name": "Inactive Only",
              "value": "inactive",
              "description": "Whether to include inactive Customers in the response"
            }
          ]
        },
        {
          "displayName": "Text To Filter By",
          "name": "search",
          "type": "string",
          "default": "",
          "description": "Filter clients by your search string"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "client"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Client ID",
      "name": "clientId",
      "type": "string",
      "default": "",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "client"
          ],
          "operation": [
            "update"
          ]
        }
      }
    },
    {
      "displayName": "Update Fields",
      "name": "updateFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Account Status",
          "name": "inactive",
          "type": "options",
          "default": false,
          "options": [
            {
              "name": "Active",
              "value": false
            },
            {
              "name": "Inactive",
              "value": true
            }
          ]
        },
        {
          "displayName": "Name",
          "name": "name",
          "type": "string",
          "default": ""
        },
        {
          "displayName": "Notes",
          "name": "notes",
          "type": "string",
          "default": ""
        },
        {
          "displayName": "VIP",
          "name": "is_vip",
          "type": "boolean",
          "default": false,
          "description": "Whether the client is VIP or not"
        },
        {
          "displayName": "Website",
          "name": "website",
          "type": "string",
          "default": ""
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "client"
          ],
          "operation": [
            "update"
          ]
        }
      }
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "delete",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "description": "Create a ticket",
          "action": "Create a ticket"
        },
        {
          "name": "Delete",
          "value": "delete",
          "description": "Delete a ticket",
          "action": "Delete a ticket"
        },
        {
          "name": "Get",
          "value": "get",
          "description": "Get a ticket",
          "action": "Get a ticket"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "description": "Get many tickets",
          "action": "Get many tickets"
        },
        {
          "name": "Update",
          "value": "update",
          "description": "Update a ticket",
          "action": "Update a ticket"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "ticket"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Ticket Type Name or ID",
      "name": "ticketType",
      "type": "options",
      "default": "",
      "description": "Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "ticket"
          ],
          "operation": [
            "create"
          ]
        }
      },
      "typeOptions": {
        "loadOptionsMethod": "getHaloPSATicketsTypes"
      }
    },
    {
      "displayName": "Summary",
      "name": "summary",
      "type": "string",
      "default": "",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "ticket"
          ],
          "operation": [
            "create"
          ]
        }
      }
    },
    {
      "displayName": "Details",
      "name": "details",
      "type": "string",
      "default": "",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "ticket"
          ],
          "operation": [
            "create"
          ]
        }
      }
    },
    {
      "displayName": "Additional Fields",
      "name": "additionalFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Assigned Agent Name or ID",
          "name": "agent_id",
          "type": "options",
          "description": "Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>",
          "default": "",
          "typeOptions": {
            "loadOptionsMethod": "getHaloPSAAgents"
          }
        },
        {
          "displayName": "Start Date",
          "name": "startdate",
          "type": "dateTime",
          "default": ""
        },
        {
          "displayName": "Target Date",
          "name": "targetdate",
          "type": "dateTime",
          "default": ""
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "ticket"
          ],
          "operation": [
            "create"
          ]
        }
      }
    },
    {
      "displayName": "Ticket ID",
      "name": "ticketId",
      "type": "string",
      "default": "",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "ticket"
          ],
          "operation": [
            "delete",
            "get"
          ]
        }
      }
    },
    {
      "displayName": "Simplify",
      "name": "simplify",
      "type": "boolean",
      "default": true,
      "description": "Whether to return a simplified version of the response instead of the raw data",
      "displayOptions": {
        "show": {
          "resource": [
            "ticket"
          ],
          "operation": [
            "get",
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Return All",
      "name": "returnAll",
      "type": "boolean",
      "default": false,
      "description": "Whether to return all results or only up to a given limit",
      "displayOptions": {
        "show": {
          "resource": [
            "ticket"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 50,
      "description": "Max number of results to return",
      "displayOptions": {
        "show": {
          "resource": [
            "ticket"
          ],
          "operation": [
            "getAll"
          ],
          "returnAll": [
            false
          ]
        }
      },
      "typeOptions": {
        "minValue": 1,
        "maxValue": 1000
      }
    },
    {
      "displayName": "Filters",
      "name": "filters",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Active Status",
          "name": "activeStatus",
          "type": "options",
          "default": "all",
          "options": [
            {
              "name": "Active Only",
              "value": "active",
              "description": "Whether to include active customers in the response"
            },
            {
              "name": "All",
              "value": "all",
              "description": "Whether to include active and inactive customers in the response"
            },
            {
              "name": "Inactive Only",
              "value": "inactive",
              "description": "Whether to include inactive Customers in the responsee"
            }
          ]
        },
        {
          "displayName": "Text To Filter By",
          "name": "search",
          "type": "string",
          "default": "",
          "description": "Filter tickets by your search string"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "ticket"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Ticket ID",
      "name": "ticketId",
      "type": "string",
      "default": "",
      "displayOptions": {
        "show": {
          "resource": [
            "ticket"
          ],
          "operation": [
            "update"
          ]
        }
      }
    },
    {
      "displayName": "Update Fields",
      "name": "updateFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Assigned Agent Name or ID",
          "name": "agent_id",
          "type": "options",
          "description": "Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>",
          "default": "",
          "typeOptions": {
            "loadOptionsMethod": "getHaloPSAAgents"
          }
        },
        {
          "displayName": "Details",
          "name": "details",
          "type": "string",
          "default": ""
        },
        {
          "displayName": "Start Date",
          "name": "startdate",
          "type": "dateTime",
          "default": ""
        },
        {
          "displayName": "Summary",
          "name": "summary",
          "type": "string",
          "default": ""
        },
        {
          "displayName": "Target Date",
          "name": "targetdate",
          "type": "dateTime",
          "default": ""
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "ticket"
          ],
          "operation": [
            "update"
          ]
        }
      }
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "description": "Create a site",
          "action": "Create a site"
        },
        {
          "name": "Delete",
          "value": "delete",
          "description": "Delete a site",
          "action": "Delete a site"
        },
        {
          "name": "Get",
          "value": "get",
          "description": "Get a site",
          "action": "Get a site"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "description": "Get many sites",
          "action": "Get many sites"
        },
        {
          "name": "Update",
          "value": "update",
          "description": "Update a site",
          "action": "Update a site"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "site"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Name",
      "name": "siteName",
      "type": "string",
      "default": "",
      "description": "Enter site name",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "site"
          ],
          "operation": [
            "create"
          ]
        }
      }
    },
    {
      "displayName": "Select Client by ID",
      "name": "selectOption",
      "type": "boolean",
      "default": false,
      "description": "Whether client can be selected by ID",
      "displayOptions": {
        "show": {
          "resource": [
            "site"
          ],
          "operation": [
            "create"
          ]
        }
      }
    },
    {
      "displayName": "Client ID",
      "name": "clientId",
      "type": "string",
      "default": "",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "site"
          ],
          "operation": [
            "create"
          ],
          "selectOption": [
            true
          ]
        }
      }
    },
    {
      "displayName": "Client Name or ID",
      "name": "clientId",
      "type": "options",
      "default": "",
      "description": "Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "site"
          ],
          "operation": [
            "create"
          ],
          "selectOption": [
            false
          ]
        }
      },
      "typeOptions": {
        "loadOptionsMethod": "getHaloPSAClients"
      }
    },
    {
      "displayName": "Additional Fields",
      "name": "additionalFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Main Contact",
          "name": "maincontact_name",
          "type": "string",
          "default": ""
        },
        {
          "displayName": "Notes",
          "name": "notes",
          "type": "string",
          "default": ""
        },
        {
          "displayName": "Phone Number",
          "name": "phonenumber",
          "type": "string",
          "default": ""
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "site"
          ],
          "operation": [
            "create"
          ]
        }
      }
    },
    {
      "displayName": "Site ID",
      "name": "siteId",
      "type": "string",
      "default": "",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "site"
          ],
          "operation": [
            "delete",
            "get"
          ]
        }
      }
    },
    {
      "displayName": "Simplify",
      "name": "simplify",
      "type": "boolean",
      "default": true,
      "description": "Whether to return a simplified version of the response instead of the raw data",
      "displayOptions": {
        "show": {
          "resource": [
            "site"
          ],
          "operation": [
            "get",
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Return All",
      "name": "returnAll",
      "type": "boolean",
      "default": false,
      "description": "Whether to return all results or only up to a given limit",
      "displayOptions": {
        "show": {
          "resource": [
            "site"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 50,
      "description": "Max number of results to return",
      "displayOptions": {
        "show": {
          "resource": [
            "site"
          ],
          "operation": [
            "getAll"
          ],
          "returnAll": [
            false
          ]
        }
      },
      "typeOptions": {
        "minValue": 1,
        "maxValue": 1000
      }
    },
    {
      "displayName": "Filters",
      "name": "filters",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Active Status",
          "name": "activeStatus",
          "type": "options",
          "default": "all",
          "options": [
            {
              "name": "Active Only",
              "value": "active",
              "description": "Whether to include active sites in the response"
            },
            {
              "name": "All",
              "value": "all",
              "description": "Whether to include active and inactive sites in the response"
            },
            {
              "name": "Inactive Only",
              "value": "inactive",
              "description": "Whether to include inactive sites in the response"
            }
          ]
        },
        {
          "displayName": "Text To Filter By",
          "name": "search",
          "type": "string",
          "default": "",
          "description": "Filter sites by your search string"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "site"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Site ID",
      "name": "siteId",
      "type": "string",
      "default": "",
      "displayOptions": {
        "show": {
          "resource": [
            "site"
          ],
          "operation": [
            "update"
          ]
        }
      }
    },
    {
      "displayName": "Update Fields",
      "name": "updateFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Client ID",
          "name": "client_id",
          "type": "string",
          "default": ""
        },
        {
          "displayName": "Main Contact",
          "name": "maincontact_name",
          "type": "string",
          "default": ""
        },
        {
          "displayName": "Name",
          "name": "name",
          "type": "string",
          "default": "",
          "description": "Enter site name"
        },
        {
          "displayName": "Notes",
          "name": "notes",
          "type": "string",
          "default": ""
        },
        {
          "displayName": "Phone Number",
          "name": "phonenumber",
          "type": "string",
          "default": ""
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "site"
          ],
          "operation": [
            "update"
          ]
        }
      }
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "description": "Create a user",
          "action": "Create a user"
        },
        {
          "name": "Delete",
          "value": "delete",
          "description": "Delete a user",
          "action": "Delete a user"
        },
        {
          "name": "Get",
          "value": "get",
          "description": "Get a user",
          "action": "Get a user"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "description": "Get many users",
          "action": "Get many users"
        },
        {
          "name": "Update",
          "value": "update",
          "description": "Update a user",
          "action": "Update a user"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Name",
      "name": "userName",
      "type": "string",
      "default": "",
      "description": "Enter user name",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ],
          "operation": [
            "create"
          ]
        }
      }
    },
    {
      "displayName": "Site Name or ID",
      "name": "siteId",
      "type": "options",
      "default": "",
      "description": "Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ],
          "operation": [
            "create"
          ]
        }
      },
      "typeOptions": {
        "loadOptionsMethod": "getHaloPSASites"
      }
    },
    {
      "displayName": "Additional Fields",
      "name": "additionalFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Email",
          "name": "emailaddress",
          "type": "string",
          "default": ""
        },
        {
          "displayName": "Notes",
          "name": "notes",
          "type": "string",
          "default": ""
        },
        {
          "displayName": "Password",
          "name": "password",
          "type": "string",
          "typeOptions": {
            "password": true
          },
          "default": "",
          "description": "Your new password must be at least 8 characters long and contain at least one letter, one number or symbol, one upper case character and one lower case character"
        },
        {
          "displayName": "Surname",
          "name": "surname",
          "type": "string",
          "default": ""
        },
        {
          "displayName": "User Is Inactive",
          "name": "inactive",
          "type": "boolean",
          "default": false
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ],
          "operation": [
            "create"
          ]
        }
      }
    },
    {
      "displayName": "User ID",
      "name": "userId",
      "type": "string",
      "default": "",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ],
          "operation": [
            "delete",
            "get"
          ]
        }
      }
    },
    {
      "displayName": "Simplify",
      "name": "simplify",
      "type": "boolean",
      "default": true,
      "description": "Whether to return a simplified version of the response instead of the raw data",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ],
          "operation": [
            "get",
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Return All",
      "name": "returnAll",
      "type": "boolean",
      "default": false,
      "description": "Whether to return all results or only up to a given limit",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 50,
      "description": "Max number of results to return",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ],
          "operation": [
            "getAll"
          ],
          "returnAll": [
            false
          ]
        }
      },
      "typeOptions": {
        "minValue": 1,
        "maxValue": 1000
      }
    },
    {
      "displayName": "Filters",
      "name": "filters",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Active Status",
          "name": "activeStatus",
          "type": "options",
          "default": "all",
          "options": [
            {
              "name": "Active Only",
              "value": "active",
              "description": "Whether to include active customers in the response"
            },
            {
              "name": "All",
              "value": "all",
              "description": "Whether to include active and inactive customers in the response"
            },
            {
              "name": "Inactive Only",
              "value": "inactive",
              "description": "Whether to include inactive Customers in the response"
            }
          ]
        },
        {
          "displayName": "Text To Filter By",
          "name": "search",
          "type": "string",
          "default": "",
          "description": "Filter users by your search string"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "User ID",
      "name": "userId",
      "type": "string",
      "default": "",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ],
          "operation": [
            "update"
          ]
        }
      }
    },
    {
      "displayName": "Update Fields",
      "name": "updateFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Email",
          "name": "emailaddress",
          "type": "string",
          "default": ""
        },
        {
          "displayName": "Name",
          "name": "name",
          "type": "string",
          "default": "",
          "description": "Enter user name"
        },
        {
          "displayName": "Notes",
          "name": "notes",
          "type": "string",
          "default": ""
        },
        {
          "displayName": "Password",
          "name": "password",
          "type": "string",
          "typeOptions": {
            "password": true
          },
          "default": "",
          "description": "Your new password must be at least 8 characters long and contain at least one letter, one number or symbol, one upper case character and one lower case character"
        },
        {
          "displayName": "Site Name or ID",
          "name": "site_id",
          "type": "options",
          "description": "Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>",
          "default": "",
          "typeOptions": {
            "loadOptionsMethod": "getHaloPSASites"
          }
        },
        {
          "displayName": "Surname",
          "name": "surname",
          "type": "string",
          "default": ""
        },
        {
          "displayName": "User Is Inactive",
          "name": "inactive",
          "type": "boolean",
          "default": false
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ],
          "operation": [
            "update"
          ]
        }
      }
    }
  ]

operations:
  [
    {
      "operation": "create",
      "name": "Create",
      "description": "Create a client"
    },
    {
      "operation": "delete",
      "name": "Delete",
      "description": "Delete a client"
    },
    {
      "operation": "get",
      "name": "Get",
      "description": "Get a client"
    },
    {
      "operation": "getAll",
      "name": "Get Many",
      "description": "Get many clients"
    },
    {
      "operation": "update",
      "name": "Update",
      "description": "Update a client"
    }
  ]

credentials_required:
  [
    {
      "name": "haloPSAApi",
      "required": true,
      "testedBy": "haloPSAApiCredentialTest"
    }
  ]


node_type: nodes-base.haloPSA
package_name: n8n-nodes-base
display_name: HaloPSA
description: Consume HaloPSA API
category: input
development_style: programmatic
version: 1
outputs:
  [
  "main"
  ]

updated_at: 2026-03-14 12:15:53
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: HaloPSA node documentation
  description: Learn how to use the HaloPSA node in n8n. Follow technical documentation to integrate HaloPSA node into your workflows.
  contentType: [integration, reference]
  ---

  # HaloPSA node

  Use the HaloPSA node to automate work in HaloPSA, and integrate HaloPSA with other applications. n8n has built-in support for a wide range of HaloPSA features, including creating, updating, deleting, and getting clients, sites and tickets. 

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

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

  ## Operations

  * Client
      * Create a client
      * Delete a client
      * Get a client
      * Get all clients
      * Update a client
  * Site
      * Create a site
      * Delete a site
      * Get a site
      * Get all sites
      * Update a site
  * Ticket
      * Create a ticket
      * Delete a ticket
      * Get a ticket
      * Get all tickets
      * Update a ticket
  * User
      * Create a user
      * Delete a user
      * Get a user
      * Get all users
      * Update a user

  ## Templates and examples

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

properties_schema:
  [
    {
      "displayName": "Resource",
      "name": "resource",
      "type": "options",
      "default": "client",
      "options": [
        {
          "name": "Client",
          "value": "client"
        },
        {
          "name": "Site",
          "value": "site"
        },
        {
          "name": "Ticket",
          "value": "ticket"
        },
        {
          "name": "User",
          "value": "user"
        }
      ],
      "required": true,
      "noDataExpression": true
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "description": "Create a client",
          "action": "Create a client"
        },
        {
          "name": "Delete",
          "value": "delete",
          "description": "Delete a client",
          "action": "Delete a client"
        },
        {
          "name": "Get",
          "value": "get",
          "description": "Get a client",
          "action": "Get a client"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "description": "Get many clients",
          "action": "Get many clients"
        },
        {
          "name": "Update",
          "value": "update",
          "description": "Update a client",
          "action": "Update a client"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "client"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Name",
      "name": "clientName",
      "type": "string",
      "default": "",
      "description": "Enter client name",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "client"
          ]
        }
      }
    },
    {
      "displayName": "Additional Fields",
      "name": "additionalFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Account Status",
          "name": "inactive",
          "type": "options",
          "default": false,
          "options": [
            {
              "name": "Active",
              "value": false
            },
            {
              "name": "Inactive",
              "value": true
            }
          ]
        },
        {
          "displayName": "Notes",
          "name": "notes",
          "type": "string",
          "default": ""
        },
        {
          "displayName": "VIP",
          "name": "is_vip",
          "type": "boolean",
          "default": false,
          "description": "Whether the client is VIP or not"
        },
        {
          "displayName": "Website",
          "name": "website",
          "type": "string",
          "default": ""
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "client"
          ]
        }
      }
    },
    {
      "displayName": "Client ID",
      "name": "clientId",
      "type": "string",
      "default": "",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "client"
          ],
          "operation": [
            "get",
            "delete"
          ]
        }
      }
    },
    {
      "displayName": "Simplify",
      "name": "simplify",
      "type": "boolean",
      "default": true,
      "description": "Whether to return a simplified version of the response instead of the raw data",
      "displayOptions": {
        "show": {
          "resource": [
            "client"
          ],
          "operation": [
            "get",
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Return All",
      "name": "returnAll",
      "type": "boolean",
      "default": false,
      "description": "Whether to return all results or only up to a given limit",
      "displayOptions": {
        "show": {
          "resource": [
            "client"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 50,
      "description": "Max number of results to return",
      "displayOptions": {
        "show": {
          "resource": [
            "client"
          ],
          "operation": [
            "getAll"
          ],
          "returnAll": [
            false
          ]
        }
      },
      "typeOptions": {
        "minValue": 1,
        "maxValue": 1000
      }
    },
    {
      "displayName": "Filters",
      "name": "filters",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Active Status",
          "name": "activeStatus",
          "type": "options",
          "default": "active",
          "options": [
            {
              "name": "Active Only",
              "value": "active",
              "description": "Whether to include active customers in the response"
            },
            {
              "name": "All",
              "value": "all",
              "description": "Whether to include active and inactive customers in the response"
            },
            {
              "name": "Inactive Only",
              "value": "inactive",
              "description": "Whether to include inactive Customers in the response"
            }
          ]
        },
        {
          "displayName": "Text To Filter By",
          "name": "search",
          "type": "string",
          "default": "",
          "description": "Filter clients by your search string"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "client"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Client ID",
      "name": "clientId",
      "type": "string",
      "default": "",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "client"
          ],
          "operation": [
            "update"
          ]
        }
      }
    },
    {
      "displayName": "Update Fields",
      "name": "updateFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Account Status",
          "name": "inactive",
          "type": "options",
          "default": false,
          "options": [
            {
              "name": "Active",
              "value": false
            },
            {
              "name": "Inactive",
              "value": true
            }
          ]
        },
        {
          "displayName": "Name",
          "name": "name",
          "type": "string",
          "default": ""
        },
        {
          "displayName": "Notes",
          "name": "notes",
          "type": "string",
          "default": ""
        },
        {
          "displayName": "VIP",
          "name": "is_vip",
          "type": "boolean",
          "default": false,
          "description": "Whether the client is VIP or not"
        },
        {
          "displayName": "Website",
          "name": "website",
          "type": "string",
          "default": ""
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "client"
          ],
          "operation": [
            "update"
          ]
        }
      }
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "delete",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "description": "Create a ticket",
          "action": "Create a ticket"
        },
        {
          "name": "Delete",
          "value": "delete",
          "description": "Delete a ticket",
          "action": "Delete a ticket"
        },
        {
          "name": "Get",
          "value": "get",
          "description": "Get a ticket",
          "action": "Get a ticket"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "description": "Get many tickets",
          "action": "Get many tickets"
        },
        {
          "name": "Update",
          "value": "update",
          "description": "Update a ticket",
          "action": "Update a ticket"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "ticket"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Ticket Type Name or ID",
      "name": "ticketType",
      "type": "options",
      "default": "",
      "description": "Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "ticket"
          ],
          "operation": [
            "create"
          ]
        }
      },
      "typeOptions": {
        "loadOptionsMethod": "getHaloPSATicketsTypes"
      }
    },
    {
      "displayName": "Summary",
      "name": "summary",
      "type": "string",
      "default": "",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "ticket"
          ],
          "operation": [
            "create"
          ]
        }
      }
    },
    {
      "displayName": "Details",
      "name": "details",
      "type": "string",
      "default": "",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "ticket"
          ],
          "operation": [
            "create"
          ]
        }
      }
    },
    {
      "displayName": "Additional Fields",
      "name": "additionalFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Assigned Agent Name or ID",
          "name": "agent_id",
          "type": "options",
          "description": "Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>",
          "default": "",
          "typeOptions": {
            "loadOptionsMethod": "getHaloPSAAgents"
          }
        },
        {
          "displayName": "Start Date",
          "name": "startdate",
          "type": "dateTime",
          "default": ""
        },
        {
          "displayName": "Target Date",
          "name": "targetdate",
          "type": "dateTime",
          "default": ""
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "ticket"
          ],
          "operation": [
            "create"
          ]
        }
      }
    },
    {
      "displayName": "Ticket ID",
      "name": "ticketId",
      "type": "string",
      "default": "",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "ticket"
          ],
          "operation": [
            "delete",
            "get"
          ]
        }
      }
    },
    {
      "displayName": "Simplify",
      "name": "simplify",
      "type": "boolean",
      "default": true,
      "description": "Whether to return a simplified version of the response instead of the raw data",
      "displayOptions": {
        "show": {
          "resource": [
            "ticket"
          ],
          "operation": [
            "get",
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Return All",
      "name": "returnAll",
      "type": "boolean",
      "default": false,
      "description": "Whether to return all results or only up to a given limit",
      "displayOptions": {
        "show": {
          "resource": [
            "ticket"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 50,
      "description": "Max number of results to return",
      "displayOptions": {
        "show": {
          "resource": [
            "ticket"
          ],
          "operation": [
            "getAll"
          ],
          "returnAll": [
            false
          ]
        }
      },
      "typeOptions": {
        "minValue": 1,
        "maxValue": 1000
      }
    },
    {
      "displayName": "Filters",
      "name": "filters",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Active Status",
          "name": "activeStatus",
          "type": "options",
          "default": "all",
          "options": [
            {
              "name": "Active Only",
              "value": "active",
              "description": "Whether to include active customers in the response"
            },
            {
              "name": "All",
              "value": "all",
              "description": "Whether to include active and inactive customers in the response"
            },
            {
              "name": "Inactive Only",
              "value": "inactive",
              "description": "Whether to include inactive Customers in the responsee"
            }
          ]
        },
        {
          "displayName": "Text To Filter By",
          "name": "search",
          "type": "string",
          "default": "",
          "description": "Filter tickets by your search string"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "ticket"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Ticket ID",
      "name": "ticketId",
      "type": "string",
      "default": "",
      "displayOptions": {
        "show": {
          "resource": [
            "ticket"
          ],
          "operation": [
            "update"
          ]
        }
      }
    },
    {
      "displayName": "Update Fields",
      "name": "updateFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Assigned Agent Name or ID",
          "name": "agent_id",
          "type": "options",
          "description": "Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>",
          "default": "",
          "typeOptions": {
            "loadOptionsMethod": "getHaloPSAAgents"
          }
        },
        {
          "displayName": "Details",
          "name": "details",
          "type": "string",
          "default": ""
        },
        {
          "displayName": "Start Date",
          "name": "startdate",
          "type": "dateTime",
          "default": ""
        },
        {
          "displayName": "Summary",
          "name": "summary",
          "type": "string",
          "default": ""
        },
        {
          "displayName": "Target Date",
          "name": "targetdate",
          "type": "dateTime",
          "default": ""
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "ticket"
          ],
          "operation": [
            "update"
          ]
        }
      }
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "description": "Create a site",
          "action": "Create a site"
        },
        {
          "name": "Delete",
          "value": "delete",
          "description": "Delete a site",
          "action": "Delete a site"
        },
        {
          "name": "Get",
          "value": "get",
          "description": "Get a site",
          "action": "Get a site"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "description": "Get many sites",
          "action": "Get many sites"
        },
        {
          "name": "Update",
          "value": "update",
          "description": "Update a site",
          "action": "Update a site"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "site"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Name",
      "name": "siteName",
      "type": "string",
      "default": "",
      "description": "Enter site name",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "site"
          ],
          "operation": [
            "create"
          ]
        }
      }
    },
    {
      "displayName": "Select Client by ID",
      "name": "selectOption",
      "type": "boolean",
      "default": false,
      "description": "Whether client can be selected by ID",
      "displayOptions": {
        "show": {
          "resource": [
            "site"
          ],
          "operation": [
            "create"
          ]
        }
      }
    },
    {
      "displayName": "Client ID",
      "name": "clientId",
      "type": "string",
      "default": "",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "site"
          ],
          "operation": [
            "create"
          ],
          "selectOption": [
            true
          ]
        }
      }
    },
    {
      "displayName": "Client Name or ID",
      "name": "clientId",
      "type": "options",
      "default": "",
      "description": "Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "site"
          ],
          "operation": [
            "create"
          ],
          "selectOption": [
            false
          ]
        }
      },
      "typeOptions": {
        "loadOptionsMethod": "getHaloPSAClients"
      }
    },
    {
      "displayName": "Additional Fields",
      "name": "additionalFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Main Contact",
          "name": "maincontact_name",
          "type": "string",
          "default": ""
        },
        {
          "displayName": "Notes",
          "name": "notes",
          "type": "string",
          "default": ""
        },
        {
          "displayName": "Phone Number",
          "name": "phonenumber",
          "type": "string",
          "default": ""
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "site"
          ],
          "operation": [
            "create"
          ]
        }
      }
    },
    {
      "displayName": "Site ID",
      "name": "siteId",
      "type": "string",
      "default": "",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "site"
          ],
          "operation": [
            "delete",
            "get"
          ]
        }
      }
    },
    {
      "displayName": "Simplify",
      "name": "simplify",
      "type": "boolean",
      "default": true,
      "description": "Whether to return a simplified version of the response instead of the raw data",
      "displayOptions": {
        "show": {
          "resource": [
            "site"
          ],
          "operation": [
            "get",
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Return All",
      "name": "returnAll",
      "type": "boolean",
      "default": false,
      "description": "Whether to return all results or only up to a given limit",
      "displayOptions": {
        "show": {
          "resource": [
            "site"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 50,
      "description": "Max number of results to return",
      "displayOptions": {
        "show": {
          "resource": [
            "site"
          ],
          "operation": [
            "getAll"
          ],
          "returnAll": [
            false
          ]
        }
      },
      "typeOptions": {
        "minValue": 1,
        "maxValue": 1000
      }
    },
    {
      "displayName": "Filters",
      "name": "filters",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Active Status",
          "name": "activeStatus",
          "type": "options",
          "default": "all",
          "options": [
            {
              "name": "Active Only",
              "value": "active",
              "description": "Whether to include active sites in the response"
            },
            {
              "name": "All",
              "value": "all",
              "description": "Whether to include active and inactive sites in the response"
            },
            {
              "name": "Inactive Only",
              "value": "inactive",
              "description": "Whether to include inactive sites in the response"
            }
          ]
        },
        {
          "displayName": "Text To Filter By",
          "name": "search",
          "type": "string",
          "default": "",
          "description": "Filter sites by your search string"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "site"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Site ID",
      "name": "siteId",
      "type": "string",
      "default": "",
      "displayOptions": {
        "show": {
          "resource": [
            "site"
          ],
          "operation": [
            "update"
          ]
        }
      }
    },
    {
      "displayName": "Update Fields",
      "name": "updateFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Client ID",
          "name": "client_id",
          "type": "string",
          "default": ""
        },
        {
          "displayName": "Main Contact",
          "name": "maincontact_name",
          "type": "string",
          "default": ""
        },
        {
          "displayName": "Name",
          "name": "name",
          "type": "string",
          "default": "",
          "description": "Enter site name"
        },
        {
          "displayName": "Notes",
          "name": "notes",
          "type": "string",
          "default": ""
        },
        {
          "displayName": "Phone Number",
          "name": "phonenumber",
          "type": "string",
          "default": ""
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "site"
          ],
          "operation": [
            "update"
          ]
        }
      }
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "description": "Create a user",
          "action": "Create a user"
        },
        {
          "name": "Delete",
          "value": "delete",
          "description": "Delete a user",
          "action": "Delete a user"
        },
        {
          "name": "Get",
          "value": "get",
          "description": "Get a user",
          "action": "Get a user"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "description": "Get many users",
          "action": "Get many users"
        },
        {
          "name": "Update",
          "value": "update",
          "description": "Update a user",
          "action": "Update a user"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Name",
      "name": "userName",
      "type": "string",
      "default": "",
      "description": "Enter user name",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ],
          "operation": [
            "create"
          ]
        }
      }
    },
    {
      "displayName": "Site Name or ID",
      "name": "siteId",
      "type": "options",
      "default": "",
      "description": "Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ],
          "operation": [
            "create"
          ]
        }
      },
      "typeOptions": {
        "loadOptionsMethod": "getHaloPSASites"
      }
    },
    {
      "displayName": "Additional Fields",
      "name": "additionalFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Email",
          "name": "emailaddress",
          "type": "string",
          "default": ""
        },
        {
          "displayName": "Notes",
          "name": "notes",
          "type": "string",
          "default": ""
        },
        {
          "displayName": "Password",
          "name": "password",
          "type": "string",
          "typeOptions": {
            "password": true
          },
          "default": "",
          "description": "Your new password must be at least 8 characters long and contain at least one letter, one number or symbol, one upper case character and one lower case character"
        },
        {
          "displayName": "Surname",
          "name": "surname",
          "type": "string",
          "default": ""
        },
        {
          "displayName": "User Is Inactive",
          "name": "inactive",
          "type": "boolean",
          "default": false
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ],
          "operation": [
            "create"
          ]
        }
      }
    },
    {
      "displayName": "User ID",
      "name": "userId",
      "type": "string",
      "default": "",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ],
          "operation": [
            "delete",
            "get"
          ]
        }
      }
    },
    {
      "displayName": "Simplify",
      "name": "simplify",
      "type": "boolean",
      "default": true,
      "description": "Whether to return a simplified version of the response instead of the raw data",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ],
          "operation": [
            "get",
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Return All",
      "name": "returnAll",
      "type": "boolean",
      "default": false,
      "description": "Whether to return all results or only up to a given limit",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 50,
      "description": "Max number of results to return",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ],
          "operation": [
            "getAll"
          ],
          "returnAll": [
            false
          ]
        }
      },
      "typeOptions": {
        "minValue": 1,
        "maxValue": 1000
      }
    },
    {
      "displayName": "Filters",
      "name": "filters",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Active Status",
          "name": "activeStatus",
          "type": "options",
          "default": "all",
          "options": [
            {
              "name": "Active Only",
              "value": "active",
              "description": "Whether to include active customers in the response"
            },
            {
              "name": "All",
              "value": "all",
              "description": "Whether to include active and inactive customers in the response"
            },
            {
              "name": "Inactive Only",
              "value": "inactive",
              "description": "Whether to include inactive Customers in the response"
            }
          ]
        },
        {
          "displayName": "Text To Filter By",
          "name": "search",
          "type": "string",
          "default": "",
          "description": "Filter users by your search string"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "User ID",
      "name": "userId",
      "type": "string",
      "default": "",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ],
          "operation": [
            "update"
          ]
        }
      }
    },
    {
      "displayName": "Update Fields",
      "name": "updateFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Email",
          "name": "emailaddress",
          "type": "string",
          "default": ""
        },
        {
          "displayName": "Name",
          "name": "name",
          "type": "string",
          "default": "",
          "description": "Enter user name"
        },
        {
          "displayName": "Notes",
          "name": "notes",
          "type": "string",
          "default": ""
        },
        {
          "displayName": "Password",
          "name": "password",
          "type": "string",
          "typeOptions": {
            "password": true
          },
          "default": "",
          "description": "Your new password must be at least 8 characters long and contain at least one letter, one number or symbol, one upper case character and one lower case character"
        },
        {
          "displayName": "Site Name or ID",
          "name": "site_id",
          "type": "options",
          "description": "Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>",
          "default": "",
          "typeOptions": {
            "loadOptionsMethod": "getHaloPSASites"
          }
        },
        {
          "displayName": "Surname",
          "name": "surname",
          "type": "string",
          "default": ""
        },
        {
          "displayName": "User Is Inactive",
          "name": "inactive",
          "type": "boolean",
          "default": false
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ],
          "operation": [
            "update"
          ]
        }
      }
    }
  ]

operations:
[cell repeats an earlier one in this file: 471 characters]

credentials_required:
  [
    {
      "name": "haloPSAApi",
      "required": true,
      "testedBy": "haloPSAApiCredentialTest"
    }
  ]


node_type: nodes-base.harvestTool
package_name: n8n-nodes-base
display_name: Harvest Tool
description: Access data on Harvest (AI Tool variant for use with AI Agents)
category: input
development_style: programmatic
version: 1
outputs:
  [
  {
  "type": "ai_tool",
  "displayName": "Tool"
  }
  ]

output_names:
  [
  "Tool"
  ]

updated_at: 2026-03-14 12:15:53
tool_variant_of: nodes-base.harvest
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Harvest node documentation
  description: Learn how to use the Harvest node in n8n. Follow technical documentation to integrate Harvest node into your workflows.
  contentType: [integration, reference]
  ---

  # Harvest node

  Use the Harvest node to automate work in Harvest, and integrate Harvest with other applications. n8n has built-in support for a wide range of Harvest features, including creating, updating, deleting, and getting clients, contacts, invoices, tasks, expenses, users, and projects. 

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

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

  ## Operations

  * Client
      * Create a client
      * Delete a client
      * Get data of a client
      * Get data of all clients
      * Update a client
  * Company
      * Retrieves the company for the currently authenticated user
  * Contact
      * Create a contact
      * Delete a contact
      * Get data of a contact
      * Get data of all contacts
      * Update a contact
  * Estimate
      * Create an estimate
      * Delete an estimate
      * Get data of an estimate
      * Get data of all estimates
      * Update an estimate
  * Expense
      * Get data of an expense
      * Get data of all expenses
      * Create an expense
      * Update an expense
      * Delete an expense
  * Invoice
      * Get data of an invoice
      * Get data of all invoices
      * Create an invoice
      * Update an invoice
      * Delete an invoice
  * Project
      * Create a project
      * Delete a project
      * Get data of a project
      * Get data of all projects
      * Update a project
  * Task
      * Create a task
      * Delete a task
      * Get data of a task
      * Get data of all tasks
      * Update a task
  * Time Entries
      * Create a time entry using duration
      * Create a time entry using start and end time
      * Delete a time entry
      * Delete a time entry's external reference.
      * Get data of a time entry
      * Get data of all time entries
      * Restart a time entry
      * Stop a time entry
      * Update a time entry
  * User
      * Create a user
      * Delete a user
      * Get data of a user
      * Get data of all users
      * Get data of authenticated user
      * Update a user

  ## Templates and examples

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

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

properties_schema:
  [
    {
      "displayName": "Tool Description",
      "name": "toolDescription",
      "type": "string",
      "default": "",
      "required": false,
      "description": "Description for the AI to understand what this tool does and when to use it",
      "typeOptions": {
        "rows": 3
      },
      "placeholder": "e.g., Use this tool to interact with Harvest"
    },
    {
      "displayName": "Authentication",
      "name": "authentication",
      "type": "options",
      "default": "accessToken",
      "options": [
        {
          "name": "Access Token",
          "value": "accessToken"
        },
        {
          "name": "OAuth2",
          "value": "oAuth2"
        }
      ]
    },
    {
      "displayName": "Resource",
      "name": "resource",
      "type": "options",
      "default": "task",
      "options": [
        {
          "name": "Client",
          "value": "client"
        },
        {
          "name": "Company",
          "value": "company"
        },
        {
          "name": "Contact",
          "value": "contact"
        },
        {
          "name": "Estimate",
          "value": "estimate"
        },
        {
          "name": "Expense",
          "value": "expense"
        },
        {
          "name": "Invoice",
          "value": "invoice"
        },
        {
          "name": "Project",
          "value": "project"
        },
        {
          "name": "Task",
          "value": "task"
        },
        {
          "name": "Time Entry",
          "value": "timeEntry"
        },
        {
          "name": "User",
          "value": "user"
        }
      ],
      "noDataExpression": true
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "description": "Create a client",
          "action": "Create a client"
        },
        {
          "name": "Delete",
          "value": "delete",
          "description": "Delete a client",
          "action": "Delete a client"
        },
        {
          "name": "Get",
          "value": "get",
          "description": "Get data of a client",
          "action": "Get data of a client"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "description": "Get data of many clients",
          "action": "Get data of all clients"
        },
        {
          "name": "Update",
          "value": "update",
          "description": "Update a client",
          "action": "Update a client"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "client"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "description": "Retrieves the company for the currently authenticated user",
          "action": "Retrieve the company for the currently authenticated user"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "company"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "description": "Create a contact",
          "action": "Create a contact"
        },
        {
          "name": "Delete",
          "value": "delete",
          "description": "Delete a contact",
          "action": "Delete a contact"
        },
        {
          "name": "Get",
          "value": "get",
          "description": "Get data of a contact",
          "action": "Get data of a contact"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "description": "Get data of many contacts",
          "action": "Get data of all contacts"
        },
        {
          "name": "Update",
          "value": "update",
          "description": "Update a contact",
          "action": "Update a contact"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "contact"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "description": "Create an estimate",
          "action": "Create an estimate"
        },
        {
          "name": "Delete",
          "value": "delete",
          "description": "Delete an estimate",
          "action": "Delete an estimate"
        },
        {
          "name": "Get",
          "value": "get",
          "description": "Get data of an estimate",
          "action": "Get data of an estimate"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "description": "Get data of many estimates",
          "action": "Get data of all estimates"
        },
        {
          "name": "Update",
          "value": "update",
          "description": "Update an estimate",
          "action": "Update an estimate"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "estimate"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "description": "Create an expense",
          "action": "Create an expense"
        },
        {
          "name": "Delete",
          "value": "delete",
          "description": "Delete an expense",
          "action": "Delete an expense"
        },
        {
          "name": "Get",
          "value": "get",
          "description": "Get data of an expense",
          "action": "Get data of an expense"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "description": "Get data of many expenses",
          "action": "Get data of all expenses"
        },
        {
          "name": "Update",
          "value": "update",
          "description": "Update an expense",
          "action": "Update an expense"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "expense"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "description": "Create an invoice",
          "action": "Create an invoice"
        },
        {
          "name": "Delete",
          "value": "delete",
          "description": "Delete an invoice",
          "action": "Delete an invoice"
        },
        {
          "name": "Get",
          "value": "get",
          "description": "Get data of an invoice",
          "action": "Get data of an invoice"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "description": "Get data of many invoices",
          "action": "Get data of all invoices"
        },
        {
          "name": "Update",
          "value": "update",
          "description": "Update an invoice",
          "action": "Update an invoice"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "invoice"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "description": "Create a project",
          "action": "Create a project"
        },
        {
          "name": "Delete",
          "value": "delete",
          "description": "Delete a project",
          "action": "Delete a project"
        },
        {
          "name": "Get",
          "value": "get",
          "description": "Get data of a project",
          "action": "Get data of a project"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "description": "Get data of many projects",
          "action": "Get data of all projects"
        },
        {
          "name": "Update",
          "value": "update",
          "description": "Update a project",
          "action": "Update a project"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "project"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "description": "Create a task",
          "action": "Create a task"
        },
        {
          "name": "Delete",
          "value": "delete",
          "description": "Delete a task",
          "action": "Delete a task"
        },
        {
          "name": "Get",
          "value": "get",
          "description": "Get data of a task",
          "action": "Get data of a task"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "description": "Get data of many tasks",
          "action": "Get data of all tasks"
        },
        {
          "name": "Update",
          "value": "update",
          "description": "Update a task",
          "action": "Update a task"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "task"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create via Duration",
          "value": "createByDuration",
          "description": "Create a time entry via duration",
          "action": "Create a time entry via duration"
        },
        {
          "name": "Create via Start and End Time",
          "value": "createByStartEnd",
          "description": "Create a time entry via start and end time",
          "action": "Create a time entry via start and end time"
        },
        {
          "name": "Delete",
          "value": "delete",
          "description": "Delete a time entry",
          "action": "Delete a time entry"
        },
        {
          "name": "Delete External Reference",
          "value": "deleteExternal",
          "description": "Delete a time entry’s external reference",
          "action": "Delete a time entry’s external reference"
        },
        {
          "name": "Get",
          "value": "get",
          "description": "Get data of a time entry",
          "action": "Get data of a time entry"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "description": "Get data of many time entries",
          "action": "Get data of all time entries"
        },
        {
          "name": "Restart",
          "value": "restartTime",
          "description": "Restart a time entry",
          "action": "Restart a time entry"
        },
        {
          "name": "Stop",
          "value": "stopTime",
          "description": "Stop a time entry",
          "action": "Stop a time entry"
        },
        {
          "name": "Update",
          "value": "update",
          "description": "Update a time entry",
          "action": "Update a time entry"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "timeEntry"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "me",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "description": "Create a user",
          "action": "Create a user"
        },
        {
          "name": "Delete",
          "value": "delete",
          "description": "Delete a user",
          "action": "Delete a user"
        },
        {
          "name": "Get",
          "value": "get",
          "description": "Get data of a user",
          "action": "Get data of a user"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "description": "Get data of many users",
          "action": "Get data of all users"
        },
        {
          "name": "Me",
          "value": "me",
          "description": "Get data of authenticated user",
          "action": "Get data of authenticated user"
        },
        {
          "name": "Update",
          "value": "update",
          "description": "Update a user",
          "action": "Update a user"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Account Name or ID",
      "name": "accountId",
      "type": "options",
      "default": "",
      "description": "Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>",
      "required": true,
      "typeOptions": {
        "loadOptionsMethod": "getAccounts"
      }
    },
    {
      "displayName": "Return All",
      "name": "returnAll",
      "type": "boolean",
      "default": false,
      "description": "Whether to return all results or only up to a given limit",
      "displayOptions": {
        "show": {
          "resource": [
            "client"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 100,
      "description": "Max number of results to return",
      "displayOptions": {
        "show": {
          "resource": [
            "client"
          ],
          "operation": [
            "getAll"
          ],
          "returnAll": [
            false
          ]
        }
      },
      "typeOptions": {
        "minValue": 1,
        "maxValue": 100
      }
    },
    {
      "displayName": "Filters",
      "name": "filters",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Is Active",
          "name": "is_active",
          "type": "boolean",
          "default": true,
          "description": "Whether to only return active clients and false to return inactive clients"
        },
        {
          "displayName": "Updated Since",
          "name": "updated_since",
          "type": "dateTime",
          "default": "",
          "description": "Only return clients that have been updated since the given date and time"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "client"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Client ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The ID of the client you are retrieving",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "get"
          ],
          "resource": [
            "client"
          ]
        }
      }
    },
    {
      "displayName": "Client ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The ID of the client you want to delete",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "delete"
          ],
          "resource": [
            "client"
          ]
        }
      }
    },
    {
      "displayName": "Name",
      "name": "name",
      "type": "string",
      "default": "",
      "description": "The name of the client",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "client"
          ]
        }
      }
    },
    {
      "displayName": "Additional Fields",
      "name": "additionalFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Address",
          "name": "address",
          "type": "string",
          "default": "",
          "description": "A textual representation of the client’s physical address. May include new line characters."
        },
        {
          "displayName": "Currency",
          "name": "currency",
          "type": "string",
          "default": "",
          "description": "The currency used by the estimate. If not provided, the client’s currency will be used. See a list of supported currencies"
        },
        {
          "displayName": "Is Active",
          "name": "is_active",
          "type": "string",
          "default": "",
          "description": "Whether the client is active, or archived. Defaults to true."
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "client"
          ]
        }
      }
    },
    {
      "displayName": "Client ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The ID of the client want to update",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "update"
          ],
          "resource": [
            "client"
          ]
        }
      }
    },
    {
      "displayName": "Update Fields",
      "name": "updateFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Address",
          "name": "address",
          "type": "string",
          "default": "",
          "description": "A textual representation of the client’s physical address. May include new line characters."
        },
        {
          "displayName": "Currency",
          "name": "currency",
          "type": "string",
          "default": "",
          "description": "The currency used by the estimate. If not provided, the client’s currency will be used. See a list of supported currencies"
        },
        {
          "displayName": "Is Active",
          "name": "is_active",
          "type": "boolean",
          "default": true,
          "description": "Whether the client is active, or archived. Defaults to true."
        },
        {
          "displayName": "Name",
          "name": "name",
          "type": "string",
          "default": "",
          "description": "Whether the client is active, or archived. Defaults to true."
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "update"
          ],
          "resource": [
            "client"
          ]
        }
      }
    },
    {
      "displayName": "Return All",
      "name": "returnAll",
      "type": "boolean",
      "default": false,
      "description": "Whether to return all results or only up to a given limit",
      "displayOptions": {
        "show": {
          "resource": [
            "contact"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 100,
      "description": "Max number of results to return",
      "displayOptions": {
        "show": {
          "resource": [
            "contact"
          ],
          "operation": [
            "getAll"
          ],
          "returnAll": [
            false
          ]
        }
      },
      "typeOptions": {
        "minValue": 1,
        "maxValue": 100
      }
    },
    {
      "displayName": "Filters",
      "name": "filters",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Is Active",
          "name": "is_active",
          "type": "boolean",
          "default": true,
          "description": "Whether to only return active clients and false to return inactive clients"
        },
        {
          "displayName": "Updated Since",
          "name": "updated_since",
          "type": "dateTime",
          "default": "",
          "description": "Only return clients that have been updated since the given date and time"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "contact"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Contact ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The ID of the contact you are retrieving",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "get"
          ],
          "resource": [
            "contact"
          ]
        }
      }
    },
    {
      "displayName": "Contact ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The ID of the contact you want to delete",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "delete"
          ],
          "resource": [
            "contact"
          ]
        }
      }
    },
    {
      "displayName": "First Name",
      "name": "firstName",
      "type": "string",
      "default": "",
      "description": "The first name of the contact",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "contact"
          ]
        }
      }
    },
    {
      "displayName": "Client ID",
      "name": "clientId",
      "type": "string",
      "default": "",
      "description": "The ID of the client associated with this contact",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "contact"
          ]
        }
      }
    },
    {
      "displayName": "Additional Fields",
      "name": "additionalFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Email",
          "name": "email",
          "type": "string",
          "placeholder": "name@email.com",
          "default": "",
          "description": "The contact’s email address"
        },
        {
          "displayName": "Fax",
          "name": "fax",
          "type": "string",
          "default": "",
          "description": "The contact’s fax number"
        },
        {
          "displayName": "Last Name",
          "name": "last_name",
          "type": "string",
          "default": "",
          "description": "The last name of the contact"
        },
        {
          "displayName": "Phone Mobile",
          "name": "phone_mobile",
          "type": "string",
          "default": "",
          "description": "The contact’s mobile phone number"
        },
        {
          "displayName": "Phone Office",
          "name": "phone_office",
          "type": "string",
          "default": "",
          "description": "The contact’s office phone number"
        },
        {
          "displayName": "Title",
          "name": "title",
          "type": "string",
          "default": "",
          "description": "The title of the contact"
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "contact"
          ]
        }
      }
    },
    {
      "displayName": "Contact ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The ID of the contact want to update",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "update"
          ],
          "resource": [
            "contact"
          ]
        }
      }
    },
    {
      "displayName": "Update Fields",
      "name": "updateFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Client ID",
          "name": "client_id",
          "type": "string",
          "default": "",
          "description": "The ID of the client associated with this contact"
        },
        {
          "displayName": "Email",
          "name": "email",
          "type": "string",
          "placeholder": "name@email.com",
          "default": "",
          "description": "The contact’s email address"
        },
        {
          "displayName": "Fax",
          "name": "fax",
          "type": "string",
          "default": "",
          "description": "The contact’s fax number"
        },
        {
          "displayName": "First Name",
          "name": "first_name",
          "type": "string",
          "default": "",
          "description": "The first name of the contact"
        },
        {
          "displayName": "Last Name",
          "name": "last_name",
          "type": "string",
          "default": "",
          "description": "The last name of the contact"
        },
        {
          "displayName": "Phone Mobile",
          "name": "phone_mobile",
          "type": "string",
          "default": "",
          "description": "The contact’s mobile phone number"
        },
        {
          "displayName": "Phone Office",
          "name": "phone_office",
          "type": "string",
          "default": "",
          "description": "The contact’s office phone number"
        },
        {
          "displayName": "Title",
          "name": "title",
          "type": "string",
          "default": "",
          "description": "The title of the contact"
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "update"
          ],
          "resource": [
            "contact"
          ]
        }
      }
    },
    {
      "displayName": "Return All",
      "name": "returnAll",
      "type": "boolean",
      "default": false,
      "description": "Whether to return all results or only up to a given limit",
      "displayOptions": {
        "show": {
          "resource": [
            "estimate"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 100,
      "description": "Max number of results to return",
      "displayOptions": {
        "show": {
          "resource": [
            "estimate"
          ],
          "operation": [
            "getAll"
          ],
          "returnAll": [
            false
          ]
        }
      },
      "typeOptions": {
        "minValue": 1,
        "maxValue": 100
      }
    },
    {
      "displayName": "Filters",
      "name": "filters",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Client ID",
          "name": "client_id",
          "type": "string",
          "default": "",
          "description": "Only return time entries belonging to the client with the given ID"
        },
        {
          "displayName": "From",
          "name": "from",
          "type": "dateTime",
          "default": "",
          "description": "Only return time entries with a spent_date on or after the given date"
        },
        {
          "displayName": "State",
          "name": "state",
          "type": "string",
          "default": "",
          "description": "Only return estimates with a state matching the value provided. Options: draft, sent, accepted, or declined."
        },
        {
          "displayName": "To",
          "name": "to",
          "type": "dateTime",
          "default": "",
          "description": "Only return time entries with a spent_date on or before the given date"
        },
        {
          "displayName": "Updated Since",
          "name": "updated_since",
          "type": "dateTime",
          "default": "",
          "description": "Only return time entries that have been updated since the given date and time"
        },
        {
          "displayName": "Page",
          "name": "page",
          "type": "number",
          "typeOptions": {
            "minValue": 1
          },
          "default": 1,
          "description": "The page number to use in pagination. For instance, if you make a list request and receive 100 records, your subsequent call can include page=2 to retrieve the next page of the list. (Default: 1)"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "estimate"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Estimate ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The ID of the estimate you are retrieving",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "get"
          ],
          "resource": [
            "estimate"
          ]
        }
      }
    },
    {
      "displayName": "Estimate ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The ID of the estimate want to delete",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "delete"
          ],
          "resource": [
            "estimate"
          ]
        }
      }
    },
    {
      "displayName": "Client ID",
      "name": "clientId",
      "type": "string",
      "default": "",
      "description": "The ID of the client this estimate belongs to",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "estimate"
          ]
        }
      }
    },
    {
      "displayName": "Additional Fields",
      "name": "additionalFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Currency",
          "name": "currency",
          "type": "string",
          "default": "",
          "description": "The currency used by the estimate. If not provided, the client’s currency will be used. See a list of supported currencies"
        },
        {
          "displayName": "Discount",
          "name": "over_budget_notification_percentage",
          "type": "string",
          "default": "",
          "description": "This percentage is subtracted from the subtotal. Example: use 10.0 for 10.0%."
        },
        {
          "displayName": "Issue Date",
          "name": "issue_date",
          "type": "dateTime",
          "default": "",
          "description": "Date the invoice was issued. Defaults to today’s date."
        },
        {
          "displayName": "Notes",
          "name": "notes",
          "type": "string",
          "default": "",
          "description": "Any additional notes to include on the estimate"
        },
        {
          "displayName": "Number",
          "name": "number",
          "type": "string",
          "default": "",
          "description": "If no value is set, the number will be automatically generated"
        },
        {
          "displayName": "Purchase Order",
          "name": "purchase_order",
          "type": "string",
          "default": "",
          "description": "The purchase order number"
        },
        {
          "displayName": "Subject",
          "name": "subject",
          "type": "string",
          "default": "",
          "description": "The estimate subject"
        },
        {
          "displayName": "Tax",
          "name": "tax",
          "type": "string",
          "default": "",
          "description": "This percentage is applied to the subtotal, including line items and discounts. Example: use 10.0 for 10.0%."
        },
        {
          "displayName": "Tax2",
          "name": "tax2",
          "type": "string",
          "default": "",
          "description": "This percentage is applied to the subtotal, including line items and discounts. Example: use 10.0 for 10.0%."
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "estimate"
          ]
        }
      }
    },
    {
      "displayName": "Invoice ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The ID of the invoice want to update",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "update"
          ],
          "resource": [
            "estimate"
          ]
        }
      }
    },
    {
      "displayName": "Update Fields",
      "name": "updateFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Client ID",
          "name": "client_id",
          "type": "string",
          "default": "",
          "description": "The ID of the retainer associated with this invoice"
        },
        {
          "displayName": "Currency",
          "name": "currency",
          "type": "string",
          "default": "",
          "description": "The currency used by the estimate. If not provided, the client’s currency will be used. See a list of supported currencies"
        },
        {
          "displayName": "Discount",
          "name": "over_budget_notification_percentage",
          "type": "string",
          "default": "",
          "description": "This percentage is subtracted from the subtotal. Example: use 10.0 for 10.0%."
        },
        {
          "displayName": "Issue Date",
          "name": "issue_date",
          "type": "dateTime",
          "default": "",
          "description": "Date the invoice was issued. Defaults to today’s date."
        },
        {
          "displayName": "Number",
          "name": "number",
          "type": "string",
          "default": "",
          "description": "If no value is set, the number will be automatically generated"
        },
        {
          "displayName": "Notes",
          "name": "notes",
          "type": "string",
          "default": "",
          "description": "Any additional notes to include on the estimate"
        },
        {
          "displayName": "Purchase Order",
          "name": "purchase_order",
          "type": "string",
          "default": "",
          "description": "The purchase order number"
        },
        {
          "displayName": "Subject",
          "name": "subject",
          "type": "string",
          "default": "",
          "description": "The estimate subject"
        },
        {
          "displayName": "Tax",
          "name": "tax",
          "type": "string",
          "default": "",
          "description": "This percentage is applied to the subtotal, including line items and discounts. Example: use 10.0 for 10.0%."
        },
        {
          "displayName": "Tax2",
          "name": "tax2",
          "type": "string",
          "default": "",
          "description": "This percentage is applied to the subtotal, including line items and discounts. Example: use 10.0 for 10.0%."
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "update"
          ],
          "resource": [
            "estimate"
          ]
        }
      }
    },
    {
      "displayName": "Return All",
      "name": "returnAll",
      "type": "boolean",
      "default": false,
      "description": "Whether to return all results or only up to a given limit",
      "displayOptions": {
        "show": {
          "resource": [
            "expense"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 100,
      "description": "Max number of results to return",
      "displayOptions": {
        "show": {
          "resource": [
            "expense"
          ],
          "operation": [
            "getAll"
          ],
          "returnAll": [
            false
          ]
        }
      },
      "typeOptions": {
        "minValue": 1,
        "maxValue": 100
      }
    },
    {
      "displayName": "Filters",
      "name": "filters",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Client ID",
          "name": "client_id",
          "type": "string",
          "default": "",
          "description": "Only return time entries belonging to the client with the given ID"
        },
        {
          "displayName": "From",
          "name": "from",
          "type": "dateTime",
          "default": "",
          "description": "Only return time entries with a spent_date on or after the given date"
        },
        {
          "displayName": "Is Billed",
          "name": "is_billed",
          "type": "boolean",
          "default": false,
          "description": "Whether to only return time entries that have been invoiced and false to return time entries that have not been invoiced"
        },
        {
          "displayName": "Page",
          "name": "page",
          "type": "number",
          "typeOptions": {
            "minValue": 1
          },
          "default": 1,
          "description": "The page number to use in pagination. For instance, if you make a list request and receive 100 records, your subsequent call can include page=2 to retrieve the next page of the list. (Default: 1)"
        },
        {
          "displayName": "Project ID",
          "name": "project_id",
          "type": "string",
          "default": "",
          "description": "Only return time entries belonging to the client with the given ID"
        },
        {
          "displayName": "To",
          "name": "to",
          "type": "dateTime",
          "default": "",
          "description": "Only return time entries with a spent_date on or before the given date"
        },
        {
          "displayName": "Updated Since",
          "name": "updated_since",
          "type": "dateTime",
          "default": "",
          "description": "Only return time entries that have been updated since the given date and time"
        },
        {
          "displayName": "User ID",
          "name": "user_id",
          "type": "string",
          "default": "",
          "description": "Only return time entries belonging to the user with the given ID"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "expense"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Expense ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The ID of the expense you are retrieving",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "get"
          ],
          "resource": [
            "expense"
          ]
        }
      }
    },
    {
      "displayName": "Expense ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The ID of the expense you want to delete",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "delete"
          ],
          "resource": [
            "expense"
          ]
        }
      }
    },
    {
      "displayName": "Project ID",
      "name": "projectId",
      "type": "string",
      "default": "",
      "description": "The ID of the project associated with this expense",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "expense"
          ]
        }
      }
    },
    {
      "displayName": "Expense Category ID",
      "name": "expenseCategoryId",
      "type": "string",
      "default": "",
      "description": "The ID of the expense category this expense is being tracked against",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "expense"
          ]
        }
      }
    },
    {
      "displayName": "Spent Date",
      "name": "spentDate",
      "type": "dateTime",
      "default": "",
      "description": "Date the expense occurred",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "expense"
          ]
        }
      }
    },
    {
      "displayName": "Additional Fields",
      "name": "additionalFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Billable",
          "name": "billable",
          "type": "boolean",
          "default": true,
          "description": "Whether this expense is billable or not. Defaults to true."
        },
        {
          "displayName": "Notes",
          "name": "notes",
          "type": "string",
          "default": "",
          "description": "Notes about the expense"
        },
        {
          "displayName": "Total Cost",
          "name": "total_cost",
          "type": "string",
          "default": "",
          "description": "The total amount of the expense"
        },
        {
          "displayName": "Units",
          "name": "units",
          "type": "string",
          "default": "",
          "description": "The quantity of units to use in calculating the total_cost of the expense"
        },
        {
          "displayName": "User ID",
          "name": "user_id",
          "type": "boolean",
          "default": true,
          "description": "The ID of the user associated with this expense. Defaults to the ID of the currently authenticated user."
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "expense"
          ]
        }
      }
    },
    {
      "displayName": "Invoice ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The ID of the invoice want to update",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "update"
          ],
          "resource": [
            "expense"
          ]
        }
      }
    },
    {
      "displayName": "Update Fields",
      "name": "updateFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Billable",
          "name": "billable",
          "type": "boolean",
          "default": true,
          "description": "Whether this expense is billable or not. Defaults to true."
        },
        {
          "displayName": "Expense Category ID",
          "name": "expense_category_id",
          "type": "string",
          "default": "",
          "description": "The ID of the expense category this expense is being tracked against"
        },
        {
          "displayName": "Notes",
          "name": "notes",
          "type": "string",
          "default": "",
          "description": "Notes about the expense"
        },
        {
          "displayName": "Project ID",
          "name": "project_id",
          "type": "string",
          "default": "",
          "description": "The ID of the project associated with this expense"
        },
        {
          "displayName": "Spent Date",
          "name": "spent_date",
          "type": "dateTime",
          "default": "",
          "description": "Date the expense occurred"
        },
        {
          "displayName": "Total Cost",
          "name": "total_cost",
          "type": "string",
          "default": "",
          "description": "The total amount of the expense"
        },
        {
          "displayName": "Units",
          "name": "units",
          "type": "string",
          "default": "",
          "description": "The quantity of units to use in calculating the total_cost of the expense"
        },
        {
          "displayName": "User ID",
          "name": "user_id",
          "type": "boolean",
          "default": true,
          "description": "The ID of the user associated with this expense. Defaults to the ID of the currently authenticated user."
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "update"
          ],
          "resource": [
            "expense"
          ]
        }
      }
    },
    {
      "displayName": "Return All",
      "name": "returnAll",
      "type": "boolean",
      "default": false,
      "description": "Whether to return all results or only up to a given limit",
      "displayOptions": {
        "show": {
          "resource": [
            "invoice"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 100,
      "description": "Max number of results to return",
      "displayOptions": {
        "show": {
          "resource": [
            "invoice"
          ],
          "operation": [
            "getAll"
          ],
          "returnAll": [
            false
          ]
        }
      },
      "typeOptions": {
        "minValue": 1,
        "maxValue": 100
      }
    },
    {
      "displayName": "Filters",
      "name": "filters",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Client ID",
          "name": "client_id",
          "type": "string",
          "default": "",
          "description": "Only return time entries belonging to the client with the given ID"
        },
        {
          "displayName": "From",
          "name": "from",
          "type": "dateTime",
          "default": "",
          "description": "Only return time entries with a spent_date on or after the given date"
        },
        {
          "displayName": "Page",
          "name": "page",
          "type": "number",
          "typeOptions": {
            "minValue": 1
          },
          "default": 1,
          "description": "The page number to use in pagination. For instance, if you make a list request and receive 100 records, your subsequent call can include page=2 to retrieve the next page of the list. (Default: 1)"
        },
        {
          "displayName": "Project ID",
          "name": "project_id",
          "type": "string",
          "default": "",
          "description": "Only return time entries belonging to the client with the given ID"
        },
        {
          "displayName": "State",
          "name": "state",
          "type": "multiOptions",
          "options": [
            {
              "name": "Draft",
              "value": "draft"
            },
            {
              "name": "Open",
              "value": "open"
            },
            {
              "name": "Paid",
              "value": "paid"
            },
            {
              "name": "Closed",
              "value": "closed"
            }
          ],
          "default": [],
          "description": "Only return invoices with a state matching the value provided. Options: draft, open, paid, or closed."
        },
        {
          "displayName": "To",
          "name": "to",
          "type": "dateTime",
          "default": "",
          "description": "Only return time entries with a spent_date on or before the given date"
        },
        {
          "displayName": "Updated Since",
          "name": "updated_since",
          "type": "dateTime",
          "default": "",
          "description": "Only return time entries that have been updated since the given date and time"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "invoice"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Invoice ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The ID of the invoice you are retrieving",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "get"
          ],
          "resource": [
            "invoice"
          ]
        }
      }
    },
    {
      "displayName": "Invoice ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The ID of the invoice want to delete",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "delete"
          ],
          "resource": [
            "invoice"
          ]
        }
      }
    },
    {
      "displayName": "Client ID",
      "name": "clientId",
      "type": "string",
      "default": "",
      "description": "The ID of the retainer associated with this invoice",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "invoice"
          ]
        }
      }
    },
    {
      "displayName": "Additional Fields",
      "name": "additionalFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Currency",
          "name": "currency",
          "type": "string",
          "default": "",
          "description": "The currency used by the invoice. If not provided, the client’s currency will be used. See a list of supported currencies"
        },
        {
          "displayName": "Discount",
          "name": "over_budget_notification_percentage",
          "type": "string",
          "default": "",
          "description": "This percentage is subtracted from the subtotal. Example: use 10.0 for 10.0%."
        },
        {
          "displayName": "Due Date",
          "name": "ends_on",
          "type": "dateTime",
          "default": "",
          "description": "Date the invoice is due. Defaults to the issue_date if no payment_term is specified."
        },
        {
          "displayName": "Estimate ID",
          "name": "estimate_id",
          "type": "string",
          "default": "",
          "description": "The ID of the estimate associated with this invoice"
        },
        {
          "displayName": "Issue Date",
          "name": "issue_date",
          "type": "dateTime",
          "default": "",
          "description": "Date the invoice was issued. Defaults to today’s date."
        },
        {
          "displayName": "Notes",
          "name": "notes",
          "type": "string",
          "default": "",
          "description": "Notes about the project"
        },
        {
          "displayName": "Number",
          "name": "number",
          "type": "string",
          "default": "",
          "description": "If no value is set, the number will be automatically generated"
        },
        {
          "displayName": "Payment Term",
          "name": "payment_term",
          "type": "string",
          "default": "",
          "description": "The timeframe in which the invoice should be paid. Defaults to custom. Options: upon receipt, net 15, net 30, net 45, or net 60."
        },
        {
          "displayName": "Purchase Order",
          "name": "purchase_order",
          "type": "string",
          "default": "",
          "description": "The purchase order number"
        },
        {
          "displayName": "Retainer ID",
          "name": "retainer_id",
          "type": "boolean",
          "default": true,
          "description": "The ID of the retainer associated with this invoice"
        },
        {
          "displayName": "Subject",
          "name": "subject",
          "type": "string",
          "default": "",
          "description": "The invoice subject"
        },
        {
          "displayName": "Tax",
          "name": "tax",
          "type": "string",
          "default": "",
          "description": "This percentage is applied to the subtotal, including line items and discounts. Example: use 10.0 for 10.0%."
        },
        {
          "displayName": "Tax2",
          "name": "tax2",
          "type": "string",
          "default": "",
          "description": "This percentage is applied to the subtotal, including line items and discounts. Example: use 10.0 for 10.0%."
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "invoice"
          ]
        }
      }
    },
    {
      "displayName": "Invoice ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The ID of the invoice want to update",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "update"
          ],
          "resource": [
            "invoice"
          ]
        }
      }
    },
    {
      "displayName": "Update Fields",
      "name": "updateFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Client ID",
          "name": "client_id",
          "type": "string",
          "default": "",
          "description": "The ID of the retainer associated with this invoice"
        },
        {
          "displayName": "Currency",
          "name": "currency",
          "type": "string",
          "default": "",
          "description": "The currency used by the invoice. If not provided, the client’s currency will be used. See a list of supported currencies"
        },
        {
          "displayName": "Discount",
          "name": "over_budget_notification_percentage",
          "type": "string",
          "default": "",
          "description": "This percentage is subtracted from the subtotal. Example: use 10.0 for 10.0%."
        },
        {
          "displayName": "Due Date",
          "name": "ends_on",
          "type": "dateTime",
          "default": "",
          "description": "Date the invoice is due. Defaults to the issue_date if no payment_term is specified."
        },
        {
          "displayName": "Estimate ID",
          "name": "estimate_id",
          "type": "string",
          "default": "",
          "description": "The ID of the estimate associated with this invoice"
        },
        {
          "displayName": "Issue Date",
          "name": "issue_date",
          "type": "dateTime",
          "default": "",
          "description": "Date the invoice was issued. Defaults to today’s date."
        },
        {
          "displayName": "Notes",
          "name": "notes",
          "type": "string",
          "default": "",
          "description": "Notes about the project"
        },
        {
          "displayName": "Number",
          "name": "number",
          "type": "string",
          "default": "",
          "description": "If no value is set, the number will be automatically generated"
        },
        {
          "displayName": "Payment Term",
          "name": "payment_term",
          "type": "string",
          "default": "",
          "description": "The timeframe in which the invoice should be paid. Defaults to custom. Options: upon receipt, net 15, net 30, net 45, or net 60."
        },
        {
          "displayName": "Purchase Order",
          "name": "purchase_order",
          "type": "string",
          "default": "",
          "description": "The purchase order number"
        },
        {
          "displayName": "Retainer ID",
          "name": "retainer_id",
          "type": "boolean",
          "default": true,
          "description": "The ID of the retainer associated with this invoice"
        },
        {
          "displayName": "Subject",
          "name": "subject",
          "type": "string",
          "default": "",
          "description": "The invoice subject"
        },
        {
          "displayName": "Tax",
          "name": "tax",
          "type": "string",
          "default": "",
          "description": "This percentage is applied to the subtotal, including line items and discounts. Example: use 10.0 for 10.0%."
        },
        {
          "displayName": "Tax2",
          "name": "tax2",
          "type": "string",
          "default": "",
          "description": "This percentage is applied to the subtotal, including line items and discounts. Example: use 10.0 for 10.0%."
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "update"
          ],
          "resource": [
            "invoice"
          ]
        }
      }
    },
    {
      "displayName": "Return All",
      "name": "returnAll",
      "type": "boolean",
      "default": false,
      "description": "Whether to return all results or only up to a given limit",
      "displayOptions": {
        "show": {
          "resource": [
            "project"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 100,
      "description": "Max number of results to return",
      "displayOptions": {
        "show": {
          "resource": [
            "project"
          ],
          "operation": [
            "getAll"
          ],
          "returnAll": [
            false
          ]
        }
      },
      "typeOptions": {
        "minValue": 1,
        "maxValue": 100
      }
    },
    {
      "displayName": "Filters",
      "name": "filters",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Client ID",
          "name": "client_id",
          "type": "string",
          "default": "",
          "description": "Only return projects belonging to the client with the given ID"
        },
        {
          "displayName": "Is Active",
          "name": "is_active",
          "type": "boolean",
          "default": true,
          "description": "Whether to only return active projects and false to return inactive projects"
        },
        {
          "displayName": "Page",
          "name": "page",
          "type": "number",
          "typeOptions": {
            "minValue": 1
          },
          "default": 1,
          "description": "The page number to use in pagination"
        },
        {
          "displayName": "Updated Since",
          "name": "updated_since",
          "type": "dateTime",
          "default": "",
          "description": "Only return projects by updated_since"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "project"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Project ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The ID of the project you are retrieving",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "get"
          ],
          "resource": [
            "project"
          ]
        }
      }
    },
    {
      "displayName": "Project ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The ID of the project want to delete",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "delete"
          ],
          "resource": [
            "project"
          ]
        }
      }
    },
    {
      "displayName": "Name",
      "name": "name",
      "type": "string",
      "default": "",
      "description": "The name of the project",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "project"
          ]
        }
      }
    },
    {
      "displayName": "Client ID",
      "name": "clientId",
      "type": "string",
      "default": "",
      "description": "The ID of the client to associate this project with",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "project"
          ]
        }
      }
    },
    {
      "displayName": "Is Billable",
      "name": "isBillable",
      "type": "boolean",
      "default": true,
      "description": "Whether the project is billable or not",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "project"
          ]
        }
      }
    },
    {
      "displayName": "Bill By",
      "name": "billBy",
      "type": "options",
      "default": "none",
      "description": "The method by which the project is invoiced",
      "options": [
        {
          "name": "None",
          "value": "none"
        },
        {
          "name": "People",
          "value": "People"
        },
        {
          "name": "Project",
          "value": "Project"
        },
        {
          "name": "Tasks",
          "value": "Tasks"
        }
      ],
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "project"
          ]
        }
      }
    },
    {
      "displayName": "Budget By",
      "name": "budgetBy",
      "type": "string",
      "default": "none",
      "description": "The email of the user or \"none\"",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "project"
          ]
        }
      }
    },
    {
      "displayName": "Additional Fields",
      "name": "additionalFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Budget",
          "name": "budget",
          "type": "number",
          "typeOptions": {
            "minValue": 0
          },
          "default": 0,
          "description": "The budget in hours for the project when budgeting by time"
        },
        {
          "displayName": "Budget Is Monthly",
          "name": "budget_is_monthly",
          "type": "boolean",
          "default": false,
          "description": "Whether the budget resets every month. Defaults to false."
        },
        {
          "displayName": "Cost Budget",
          "name": "cost_budget",
          "type": "string",
          "default": "",
          "description": "The monetary budget for the project when budgeting by money"
        },
        {
          "displayName": "Cost Budget Include Expenses",
          "name": "cost_budget_include_expenses",
          "type": "boolean",
          "default": false,
          "description": "Option for budget of Total Project Fees projects to include tracked expenses. Defaults to false."
        },
        {
          "displayName": "Ends On",
          "name": "ends_on",
          "type": "dateTime",
          "default": "",
          "description": "Date the project will end"
        },
        {
          "displayName": "Fee",
          "name": "fee",
          "type": "string",
          "default": "",
          "description": "The amount you plan to invoice for the project. Only used by fixed-fee projects."
        },
        {
          "displayName": "Hourly Rate",
          "name": "hourly_rate",
          "type": "string",
          "default": "",
          "description": "Rate for projects billed by Project Hourly Rate"
        },
        {
          "displayName": "Is Active",
          "name": "is_active",
          "type": "boolean",
          "default": true,
          "description": "Whether the project is active or archived. Defaults to true."
        },
        {
          "displayName": "Is Fixed Fee",
          "name": "is_fixed_fee",
          "type": "boolean",
          "default": false,
          "description": "Whether the project is a fixed-fee project or not"
        },
        {
          "displayName": "Notes",
          "name": "notes",
          "type": "string",
          "default": "",
          "description": "Notes about the project"
        },
        {
          "displayName": "Notify When Over Budget",
          "name": "notify_when_over_budget",
          "type": "boolean",
          "default": false,
          "description": "Whether project managers should be notified when the project goes over budget. Defaults to false."
        },
        {
          "displayName": "Over Budget Notification Percentage",
          "name": "over_budget_notification_percentage",
          "type": "string",
          "default": "",
          "description": "Percentage value used to trigger over budget email alerts. Example: use 10.0 for 10.0%."
        },
        {
          "displayName": "Show Budget To All",
          "name": "show_budget_to_all",
          "type": "boolean",
          "default": false,
          "description": "Whether to show project budget to all employees. Does not apply to Total Project Fee projects. Defaults to false."
        },
        {
          "displayName": "Starts On",
          "name": "starts_on",
          "type": "dateTime",
          "default": "",
          "description": "Date the project was started"
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "project"
          ]
        }
      }
    },
    {
      "displayName": "Project ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The ID of the project want to update",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "update"
          ],
          "resource": [
            "project"
          ]
        }
      }
    },
    {
      "displayName": "Update Fields",
      "name": "updateFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Bill By",
          "name": "bill_by",
          "type": "options",
          "options": [
            {
              "name": "None",
              "value": "none"
            },
            {
              "name": "People",
              "value": "People"
            },
            {
              "name": "Project",
              "value": "Project"
            },
            {
              "name": "Tasks",
              "value": "Tasks"
            }
          ],
          "default": "none",
          "description": "The method by which the project is invoiced"
        },
        {
          "displayName": "Budget",
          "name": "budget",
          "type": "string",
          "default": "",
          "description": "The budget in hours for the project when budgeting by time"
        },
        {
          "displayName": "Budget By",
          "name": "budget_by",
          "type": "string",
          "default": "",
          "description": "The email of the user or \"none\""
        },
        {
          "displayName": "Budget Is Monthly",
          "name": "budget_is_monthly",
          "type": "boolean",
          "default": false,
          "description": "Whether to have the budget reset every month. Defaults to false."
        },
        {
          "displayName": "Client ID",
          "name": "client_id",
          "type": "string",
          "default": "",
          "description": "The ID of the client to associate this project with"
        },
        {
          "displayName": "Cost Budget",
          "name": "cost_budget",
          "type": "string",
          "default": "",
          "description": "The monetary budget for the project when budgeting by money"
        },
        {
          "displayName": "Cost Budget Include Expenses",
          "name": "cost_budget_include_expenses",
          "type": "boolean",
          "default": false,
          "description": "Option for budget of Total Project Fees projects to include tracked expenses. Defaults to false."
        },
        {
          "displayName": "Ends On",
          "name": "ends_on",
          "type": "dateTime",
          "default": "",
          "description": "Date the project will end"
        },
        {
          "displayName": "Fee",
          "name": "fee",
          "type": "string",
          "default": "",
          "description": "The amount you plan to invoice for the project. Only used by fixed-fee projects."
        },
        {
          "displayName": "Hourly Rate",
          "name": "hourly_rate",
          "type": "string",
          "default": "",
          "description": "Rate for projects billed by Project Hourly Rate"
        },
        {
          "displayName": "Is Active",
          "name": "is_active",
          "type": "boolean",
          "default": true,
          "description": "Whether the project is active or archived. Defaults to true."
        },
        {
          "displayName": "Is Billable",
          "name": "is_billable",
          "type": "boolean",
          "default": true,
          "description": "Whether the project is billable or not"
        },
        {
          "displayName": "Is Fixed Fee",
          "name": "is_fixed_fee",
          "type": "boolean",
          "default": false,
          "description": "Whether the project is a fixed-fee project or not"
        },
        {
          "displayName": "Name",
          "name": "name",
          "type": "string",
          "default": "",
          "description": "The name of the project"
        },
        {
          "displayName": "Notes",
          "name": "notes",
          "type": "string",
          "default": "",
          "description": "Notes about the project"
        },
        {
          "displayName": "Notify When Over Budget",
          "name": "notify_when_over_budget",
          "type": "boolean",
          "default": false,
          "description": "Whether project managers should be notified when the project goes over budget. Defaults to false."
        },
        {
          "displayName": "Over Budget Notification Percentage",
          "name": "over_budget_notification_percentage",
          "type": "string",
          "default": "",
          "description": "Percentage value used to trigger over budget email alerts. Example: use 10.0 for 10.0%."
        },
        {
          "displayName": "Show Budget To All",
          "name": "show_budget_to_all",
          "type": "boolean",
          "default": false,
          "description": "Whether to show project budget to all employees. Does not apply to Total Project Fee projects. Defaults to false."
        },
        {
          "displayName": "Starts On",
          "name": "starts_on",
          "type": "dateTime",
          "default": "",
          "description": "Date the project was started"
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "update"
          ],
          "resource": [
            "project"
          ]
        }
      }
    },
    {
      "displayName": "Return All",
      "name": "returnAll",
      "type": "boolean",
      "default": false,
      "description": "Whether to return all results or only up to a given limit",
      "displayOptions": {
        "show": {
          "resource": [
            "task"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 100,
      "description": "Max number of results to return",
      "displayOptions": {
        "show": {
          "resource": [
            "task"
          ],
          "operation": [
            "getAll"
          ],
          "returnAll": [
            false
          ]
        }
      },
      "typeOptions": {
        "minValue": 1,
        "maxValue": 100
      }
    },
    {
      "displayName": "Filters",
      "name": "filters",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Is Active",
          "name": "is_active",
          "type": "boolean",
          "default": true,
          "description": "Whether to only return active tasks and false to return inactive tasks"
        },
        {
          "displayName": "Page",
          "name": "page",
          "type": "number",
          "typeOptions": {
            "minValue": 1
          },
          "default": 1,
          "description": "The page number to use in pagination"
        },
        {
          "displayName": "Updated Since",
          "name": "updated_since",
          "type": "dateTime",
          "default": "",
          "description": "Only return tasks belonging to the task with the given ID"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "task"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Task ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The ID of the task you are retrieving",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "get"
          ],
          "resource": [
            "task"
          ]
        }
      }
    },
    {
      "displayName": "Task ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The ID of the task you want to delete",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "delete"
          ],
          "resource": [
            "task"
          ]
        }
      }
    },
    {
      "displayName": "Name",
      "name": "name",
      "type": "string",
      "default": "",
      "description": "The name of the task",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "task"
          ]
        }
      }
    },
    {
      "displayName": "Additional Fields",
      "name": "additionalFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Billable By Default",
          "name": "billable_by_default",
          "type": "boolean",
          "default": true,
          "description": "Whether default tasks should be marked billable when creating a new project. Defaults to true."
        },
        {
          "displayName": "Default Hourly Rate",
          "name": "default_hourly_rate",
          "type": "number",
          "default": 0,
          "description": "The default hourly rate to use for this task when it is added to a project. Defaults to 0."
        },
        {
          "displayName": "Is Active",
          "name": "is_active",
          "type": "boolean",
          "default": true,
          "description": "Whether this task is active or archived. Defaults to true."
        },
        {
          "displayName": "Is Default",
          "name": "is_default",
          "type": "boolean",
          "default": false,
          "description": "Whether this task should be automatically added to future projects. Defaults to false."
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "task"
          ]
        }
      }
    },
    {
      "displayName": "Task ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The ID of the task you want to update",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "update"
          ],
          "resource": [
            "task"
          ]
        }
      }
    },
    {
      "displayName": "Update Fields",
      "name": "updateFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Billable By Default",
          "name": "billable_by_default",
          "type": "boolean",
          "default": false,
          "description": "Whether default tasks should be marked billable when creating a new project. Defaults to true."
        },
        {
          "displayName": "Default Hourly Rate",
          "name": "default_hourly_rate",
          "type": "number",
          "default": 0,
          "description": "The default hourly rate to use for this task when it is added to a project. Defaults to 0."
        },
        {
          "displayName": "Is Active",
          "name": "is_active",
          "type": "boolean",
          "default": true,
          "description": "Whether this task is active or archived. Defaults to true."
        },
        {
          "displayName": "Is Default",
          "name": "is_default",
          "type": "boolean",
          "default": false,
          "description": "Whether this task should be automatically added to future projects. Defaults to false."
        },
        {
          "displayName": "Name",
          "name": "name",
          "type": "string",
          "default": "",
          "description": "Name of the task"
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "update"
          ],
          "resource": [
            "task"
          ]
        }
      }
    },
    {
      "displayName": "Return All",
      "name": "returnAll",
      "type": "boolean",
      "default": false,
      "description": "Whether to return all results or only up to a given limit",
      "displayOptions": {
        "show": {
          "resource": [
            "timeEntry"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 100,
      "description": "Max number of results to return",
      "displayOptions": {
        "show": {
          "resource": [
            "timeEntry"
          ],
          "operation": [
            "getAll"
          ],
          "returnAll": [
            false
          ]
        }
      },
      "typeOptions": {
        "minValue": 1,
        "maxValue": 100
      }
    },
    {
      "displayName": "Filters",
      "name": "filters",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Client ID",
          "name": "client_id",
          "type": "string",
          "default": "",
          "description": "Only return time entries belonging to the client with the given ID"
        },
        {
          "displayName": "From",
          "name": "from",
          "type": "dateTime",
          "default": "",
          "description": "Only return time entries with a spent_date on or after the given date"
        },
        {
          "displayName": "Is Billed",
          "name": "is_billed",
          "type": "boolean",
          "default": true,
          "description": "Whether to only return time entries that have been invoiced and false to return time entries that have not been invoiced"
        },
        {
          "displayName": "Is Running",
          "name": "is_running",
          "type": "boolean",
          "default": true,
          "description": "Whether to only return running time entries and false to return non-running time entries"
        },
        {
          "displayName": "Page",
          "name": "page",
          "type": "number",
          "typeOptions": {
            "minValue": 1
          },
          "default": 1,
          "description": "The page number to use in pagination. For instance, if you make a list request and receive 100 records, your subsequent call can include page=2 to retrieve the next page of the list. (Default: 1)"
        },
        {
          "displayName": "To",
          "name": "to",
          "type": "dateTime",
          "default": "",
          "description": "Only return time entries with a spent_date on or before the given date"
        },
        {
          "displayName": "Updated Since",
          "name": "updated_since",
          "type": "dateTime",
          "default": "",
          "description": "Only return time entries that have been updated since the given date and time"
        },
        {
          "displayName": "User ID",
          "name": "user_id",
          "type": "string",
          "default": "",
          "description": "Only return time entries belonging to the user with the given ID"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "timeEntry"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Time Entry ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The ID of the time entry you are retrieving",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "get"
          ],
          "resource": [
            "timeEntry"
          ]
        }
      }
    },
    {
      "displayName": "Time Entry ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The ID of the time entry you are deleting",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "delete"
          ],
          "resource": [
            "timeEntry"
          ]
        }
      }
    },
    {
      "displayName": "Time Entry ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The ID of the time entry whose external reference you are deleting",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "deleteExternal"
          ],
          "resource": [
            "timeEntry"
          ]
        }
      }
    },
    {
      "displayName": "Time Entry ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "Stop a running time entry. Stopping a time entry is only possible if it’s currently running.",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "stopTime"
          ],
          "resource": [
            "timeEntry"
          ]
        }
      }
    },
    {
      "displayName": "Time Entry ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "Restart a stopped time entry. Restarting a time entry is only possible if it isn’t currently running.",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "restartTime"
          ],
          "resource": [
            "timeEntry"
          ]
        }
      }
    },
    {
      "displayName": "Time Entry ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The ID of the time entry to update",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "update"
          ],
          "resource": [
            "timeEntry"
          ]
        }
      }
    },
    {
      "displayName": "Update Fields",
      "name": "updateFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Ended Time",
          "name": "ended_time",
          "type": "string",
          "default": "",
          "placeholder": "3:00pm",
          "description": "The time the entry ended"
        },
        {
          "displayName": "Hours",
          "name": "hours",
          "type": "number",
          "typeOptions": {
            "minValue": 0
          },
          "default": 0,
          "description": "The current amount of time tracked"
        },
        {
          "displayName": "Notes",
          "name": "notes",
          "type": "string",
          "default": "",
          "description": "These are notes about the time entry"
        },
        {
          "displayName": "Started Time",
          "name": "started_time",
          "type": "string",
          "default": "",
          "placeholder": "3:00pm",
          "description": "The time the entry started. Defaults to the current time. Example: “8:00am”."
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "update"
          ],
          "resource": [
            "timeEntry"
          ]
        }
      }
    },
    {
      "displayName": "Project ID",
      "name": "projectId",
      "type": "string",
      "default": "",
      "description": "The ID of the project to associate with the time entry",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "createByDuration"
          ],
          "resource": [
            "timeEntry"
          ]
        }
      }
    },
    {
      "displayName": "Task ID",
      "name": "taskId",
      "type": "string",
      "default": "",
      "description": "The ID of the task to associate with the time entry",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "createByDuration"
          ],
          "resource": [
            "timeEntry"
          ]
        }
      }
    },
    {
      "displayName": "Spent Date",
      "name": "spentDate",
      "type": "dateTime",
      "default": "",
      "description": "The ISO 8601 formatted date the time entry was spent",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "createByDuration"
          ],
          "resource": [
            "timeEntry"
          ]
        }
      }
    },
    {
      "displayName": "Additional Fields",
      "name": "additionalFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Hours",
          "name": "hours",
          "type": "number",
          "typeOptions": {
            "minValue": 0
          },
          "default": 0,
          "description": "The current amount of time tracked"
        },
        {
          "displayName": "Notes",
          "name": "notes",
          "type": "string",
          "default": "",
          "description": "These are notes about the time entry"
        },
        {
          "displayName": "User ID",
          "name": "user_id",
          "type": "string",
          "default": "",
          "description": "The ID of the user to associate with the time entry. Defaults to the currently authenticated user’s ID."
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "createByDuration"
          ],
          "resource": [
            "timeEntry"
          ]
        }
      }
    },
    {
      "displayName": "Project ID",
      "name": "projectId",
      "type": "string",
      "default": "",
      "description": "The ID of the project to associate with the time entry",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "createByStartEnd"
          ],
          "resource": [
            "timeEntry"
          ]
        }
      }
    },
    {
      "displayName": "Task ID",
      "name": "taskId",
      "type": "string",
      "default": "",
      "description": "The ID of the task to associate with the time entry",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "createByStartEnd"
          ],
          "resource": [
            "timeEntry"
          ]
        }
      }
    },
    {
      "displayName": "Spent Date",
      "name": "spentDate",
      "type": "dateTime",
      "default": "",
      "description": "The ISO 8601 formatted date the time entry was spent",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "createByStartEnd"
          ],
          "resource": [
            "timeEntry"
          ]
        }
      }
    },
    {
      "displayName": "Additional Fields",
      "name": "additionalFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Ended Time",
          "name": "ended_time",
          "type": "string",
          "default": "",
          "placeholder": "3:00pm",
          "description": "The time the entry ended"
        },
        {
          "displayName": "Notes",
          "name": "notes",
          "type": "string",
          "default": "",
          "description": "These are notes about the time entry"
        },
        {
          "displayName": "Started Time",
          "name": "started_time",
          "type": "string",
          "default": "",
          "placeholder": "8:00am",
          "description": "The time the entry started. Defaults to the current time. Example: “8:00am”."
        },
        {
          "displayName": "User ID",
          "name": "user_id",
          "type": "string",
          "default": "",
          "description": "The ID of the user to associate with the time entry. Defaults to the currently authenticated user’s ID."
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "createByStartEnd"
          ],
          "resource": [
            "timeEntry"
          ]
        }
      }
    },
    {
      "displayName": "Return All",
      "name": "returnAll",
      "type": "boolean",
      "default": false,
      "description": "Whether to return all results or only up to a given limit",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 100,
      "description": "Max number of results to return",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ],
          "operation": [
            "getAll"
          ],
          "returnAll": [
            false
          ]
        }
      },
      "typeOptions": {
        "minValue": 1,
        "maxValue": 100
      }
    },
    {
      "displayName": "Filters",
      "name": "filters",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Is Active",
          "name": "is_active",
          "type": "boolean",
          "default": true,
          "description": "Whether to only return active users and false to return inactive users"
        },
        {
          "displayName": "Updated Since",
          "name": "updated_since",
          "type": "dateTime",
          "default": "",
          "description": "Only return users belonging to the user with the given ID"
        },
        {
          "displayName": "Page",
          "name": "page",
          "type": "number",
          "typeOptions": {
            "minValue": 1
          },
          "default": 1,
          "description": "The page number to use in pagination"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "User ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The ID of the user you are retrieving",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "get"
          ],
          "resource": [
            "user"
          ]
        }
      }
    },
    {
      "displayName": "User ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The ID of the user you want to delete",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "delete"
          ],
          "resource": [
            "user"
          ]
        }
      }
    },
    {
      "displayName": "First Name",
      "name": "firstName",
      "type": "string",
      "default": "",
      "description": "The first name of the user",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "user"
          ]
        }
      }
    },
    {
      "displayName": "Last Name",
      "name": "lastName",
      "type": "string",
      "default": "",
      "description": "The last name of the user",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "user"
          ]
        }
      }
    },
    {
      "displayName": "Email",
      "name": "email",
      "type": "string",
      "default": "",
      "description": "The email of the user",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "user"
          ]
        }
      }
    },
    {
      "displayName": "Additional Fields",
      "name": "additionalFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Can Create Invoices",
          "name": "can_create_invoices",
          "type": "boolean",
          "default": false,
          "description": "Whether the user can create invoices. Only applicable to Project Managers."
        },
        {
          "displayName": "Can Create Projects",
          "name": "can_create_projects",
          "type": "boolean",
          "default": false,
          "description": "Whether the user can create projects. Only applicable to Project Managers."
        },
        {
          "displayName": "Can See Rates",
          "name": "can_see_rates",
          "type": "boolean",
          "default": false,
          "description": "Whether the user can see billable rates on projects. Only applicable to Project Managers."
        },
        {
          "displayName": "Cost Rate",
          "name": "cost_rate",
          "type": "number",
          "typeOptions": {
            "minValue": 0
          },
          "default": 0,
          "description": "The cost rate to use for this user when calculating a project’s costs vs billable amount"
        },
        {
          "displayName": "Default Hourly Rate",
          "name": "default_hourly_rate",
          "type": "string",
          "default": "0",
          "description": "The billable rate to use for this user when they are added to a project"
        },
        {
          "displayName": "Has Access To All Future Projects",
          "name": "has_access_to_all_future_projects",
          "type": "boolean",
          "default": false,
          "description": "Whether the user should be automatically added to future projects"
        },
        {
          "displayName": "Is Active",
          "name": "is_active",
          "type": "boolean",
          "default": true,
          "description": "Whether the user is active or archived"
        },
        {
          "displayName": "Is Admin",
          "name": "is_admin",
          "type": "boolean",
          "default": false,
          "description": "Whether the user has Admin permissions"
        },
        {
          "displayName": "Is Contractor",
          "name": "is_contractor",
          "type": "boolean",
          "default": false,
          "description": "Whether the user is a contractor or an employee"
        },
        {
          "displayName": "Is Project Manager",
          "name": "is_project_manager",
          "type": "boolean",
          "default": false,
          "description": "Whether the user has Project Manager permissions"
        },
        {
          "displayName": "Roles",
          "name": "roles",
          "type": "string",
          "default": "",
          "description": "The role names assigned to this person"
        },
        {
          "displayName": "Timezone",
          "name": "timezone",
          "type": "string",
          "default": "",
          "description": "The user’s timezone. Defaults to the company’s timezone. See a list of <a href=\"/api-v2/introduction/overview/supported-timezones/\">supported time zones</a>."
        },
        {
          "displayName": "Weekly Capacity",
          "name": "weekly_capacity",
          "type": "number",
          "typeOptions": {
            "minValue": 0
          },
          "default": 126000,
          "description": "The number of hours per week this person is available to work in seconds. Defaults to <code class=\"language-plaintext highlighter-rouge\">126000</code> seconds (35 hours)."
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "user"
          ]
        }
      }
    },
    {
      "displayName": "Time Entry ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The ID of the time entry to update",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "update"
          ],
          "resource": [
            "user"
          ]
        }
      }
    },
    {
      "displayName": "Update Fields",
      "name": "updateFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Can Create Invoices",
          "name": "can_create_invoices",
          "type": "boolean",
          "default": false,
          "description": "Whether the user can create invoices. Only applicable to Project Managers."
        },
        {
          "displayName": "Can Create Projects",
          "name": "can_create_projects",
          "type": "boolean",
          "default": false,
          "description": "Whether the user can create projects. Only applicable to Project Managers."
        },
        {
          "displayName": "Can See Rates",
          "name": "can_see_rates",
          "type": "boolean",
          "default": false,
          "description": "Whether the user can see billable rates on projects. Only applicable to Project Managers."
        },
        {
          "displayName": "Cost Rate",
          "name": "cost_rate",
          "type": "number",
          "typeOptions": {
            "minValue": 0
          },
          "default": 0,
          "description": "The cost rate to use for this user when calculating a project’s costs vs billable amount"
        },
        {
          "displayName": "Default Hourly Rate",
          "name": "default_hourly_rate",
          "type": "string",
          "default": "0",
          "description": "The billable rate to use for this user when they are added to a project"
        },
        {
          "displayName": "Email",
          "name": "email",
          "type": "string",
          "placeholder": "name@email.com",
          "default": "",
          "description": "The user email"
        },
        {
          "displayName": "First Name",
          "name": "first_name",
          "type": "string",
          "default": "",
          "description": "The user first name"
        },
        {
          "displayName": "Has Access To All Future Projects",
          "name": "has_access_to_all_future_projects",
          "type": "boolean",
          "default": false,
          "description": "Whether the user should be automatically added to future projects"
        },
        {
          "displayName": "Is Active",
          "name": "is_active",
          "type": "boolean",
          "default": true,
          "description": "Whether the user is active or archived"
        },
        {
          "displayName": "Is Admin",
          "name": "is_admin",
          "type": "boolean",
          "default": false,
          "description": "Whether the user has Admin permissions"
        },
        {
          "displayName": "Is Contractor",
          "name": "is_contractor",
          "type": "boolean",
          "default": false,
          "description": "Whether the user is a contractor or an employee"
        },
        {
          "displayName": "Is Project Manager",
          "name": "is_project_manager",
          "type": "boolean",
          "default": false,
          "description": "Whether the user has Project Manager permissions"
        },
        {
          "displayName": "Last Name",
          "name": "last_name",
          "type": "string",
          "default": "",
          "description": "The user last name"
        },
        {
          "displayName": "Roles",
          "name": "roles",
          "type": "string",
          "default": "",
          "description": "The role names assigned to this person"
        },
        {
          "displayName": "Timezone",
          "name": "timezone",
          "type": "string",
          "default": "",
          "description": "The user’s timezone. Defaults to the company’s timezone. See a list of <a href=\"/api-v2/introduction/overview/supported-timezones/\">supported time zones</a>."
        },
        {
          "displayName": "Weekly Capacity",
          "name": "weekly_capacity",
          "type": "number",
          "typeOptions": {
            "minValue": 0
          },
          "default": 126000,
          "description": "The number of hours per week this person is available to work in seconds. Defaults to <code class=\"language-plaintext highlighter-rouge\">126000</code> seconds (35 hours)."
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "update"
          ],
          "resource": [
            "user"
          ]
        }
      }
    }
  ]

operations:
  [
    {
      "operation": "create",
      "name": "Create",
      "description": "Create a client"
    },
    {
      "operation": "delete",
      "name": "Delete",
      "description": "Delete a client"
    },
    {
      "operation": "get",
      "name": "Get",
      "description": "Get data of a client"
    },
    {
      "operation": "getAll",
      "name": "Get Many",
      "description": "Get data of many clients"
    },
    {
      "operation": "update",
      "name": "Update",
      "description": "Update a client"
    }
  ]

credentials_required:
  [
    {
      "name": "harvestApi",
      "required": true,
      "displayOptions": {
        "show": {
          "authentication": [
            "accessToken"
          ]
        }
      }
    },
    {
      "name": "harvestOAuth2Api",
      "required": true,
      "displayOptions": {
        "show": {
          "authentication": [
            "oAuth2"
          ]
        }
      }
    }
  ]


node_type: nodes-base.harvest
package_name: n8n-nodes-base
display_name: Harvest
description: Access data on Harvest
category: input
development_style: programmatic
version: 1
outputs:
  [
  "main"
  ]

updated_at: 2026-03-14 12:15:53
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Harvest node documentation
  description: Learn how to use the Harvest node in n8n. Follow technical documentation to integrate Harvest node into your workflows.
  contentType: [integration, reference]
  ---

  # Harvest node

  Use the Harvest node to automate work in Harvest, and integrate Harvest with other applications. n8n has built-in support for a wide range of Harvest features, including creating, updating, deleting, and getting clients, contacts, invoices, tasks, expenses, users, and projects. 

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

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

  ## Operations

  * Client
      * Create a client
      * Delete a client
      * Get data of a client
      * Get data of all clients
      * Update a client
  * Company
      * Retrieves the company for the currently authenticated user
  * Contact
      * Create a contact
      * Delete a contact
      * Get data of a contact
      * Get data of all contacts
      * Update a contact
  * Estimate
      * Create an estimate
      * Delete an estimate
      * Get data of an estimate
      * Get data of all estimates
      * Update an estimate
  * Expense
      * Get data of an expense
      * Get data of all expenses
      * Create an expense
      * Update an expense
      * Delete an expense
  * Invoice
      * Get data of an invoice
      * Get data of all invoices
      * Create an invoice
      * Update an invoice
      * Delete an invoice
  * Project
      * Create a project
      * Delete a project
      * Get data of a project
      * Get data of all projects
      * Update a project
  * Task
      * Create a task
      * Delete a task
      * Get data of a task
      * Get data of all tasks
      * Update a task
  * Time Entries
      * Create a time entry using duration
      * Create a time entry using start and end time
      * Delete a time entry
      * Delete a time entry's external reference.
      * Get data of a time entry
      * Get data of all time entries
      * Restart a time entry
      * Stop a time entry
      * Update a time entry
  * User
      * Create a user
      * Delete a user
      * Get data of a user
      * Get data of all users
      * Get data of authenticated user
      * Update a user

  ## Templates and examples

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

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

properties_schema:
  [
    {
      "displayName": "Authentication",
      "name": "authentication",
      "type": "options",
      "default": "accessToken",
      "options": [
        {
          "name": "Access Token",
          "value": "accessToken"
        },
        {
          "name": "OAuth2",
          "value": "oAuth2"
        }
      ]
    },
    {
      "displayName": "Resource",
      "name": "resource",
      "type": "options",
      "default": "task",
      "options": [
        {
          "name": "Client",
          "value": "client"
        },
        {
          "name": "Company",
          "value": "company"
        },
        {
          "name": "Contact",
          "value": "contact"
        },
        {
          "name": "Estimate",
          "value": "estimate"
        },
        {
          "name": "Expense",
          "value": "expense"
        },
        {
          "name": "Invoice",
          "value": "invoice"
        },
        {
          "name": "Project",
          "value": "project"
        },
        {
          "name": "Task",
          "value": "task"
        },
        {
          "name": "Time Entry",
          "value": "timeEntry"
        },
        {
          "name": "User",
          "value": "user"
        }
      ],
      "noDataExpression": true
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "description": "Create a client",
          "action": "Create a client"
        },
        {
          "name": "Delete",
          "value": "delete",
          "description": "Delete a client",
          "action": "Delete a client"
        },
        {
          "name": "Get",
          "value": "get",
          "description": "Get data of a client",
          "action": "Get data of a client"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "description": "Get data of many clients",
          "action": "Get data of all clients"
        },
        {
          "name": "Update",
          "value": "update",
          "description": "Update a client",
          "action": "Update a client"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "client"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "description": "Retrieves the company for the currently authenticated user",
          "action": "Retrieve the company for the currently authenticated user"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "company"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "description": "Create a contact",
          "action": "Create a contact"
        },
        {
          "name": "Delete",
          "value": "delete",
          "description": "Delete a contact",
          "action": "Delete a contact"
        },
        {
          "name": "Get",
          "value": "get",
          "description": "Get data of a contact",
          "action": "Get data of a contact"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "description": "Get data of many contacts",
          "action": "Get data of all contacts"
        },
        {
          "name": "Update",
          "value": "update",
          "description": "Update a contact",
          "action": "Update a contact"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "contact"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "description": "Create an estimate",
          "action": "Create an estimate"
        },
        {
          "name": "Delete",
          "value": "delete",
          "description": "Delete an estimate",
          "action": "Delete an estimate"
        },
        {
          "name": "Get",
          "value": "get",
          "description": "Get data of an estimate",
          "action": "Get data of an estimate"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "description": "Get data of many estimates",
          "action": "Get data of all estimates"
        },
        {
          "name": "Update",
          "value": "update",
          "description": "Update an estimate",
          "action": "Update an estimate"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "estimate"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "description": "Create an expense",
          "action": "Create an expense"
        },
        {
          "name": "Delete",
          "value": "delete",
          "description": "Delete an expense",
          "action": "Delete an expense"
        },
        {
          "name": "Get",
          "value": "get",
          "description": "Get data of an expense",
          "action": "Get data of an expense"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "description": "Get data of many expenses",
          "action": "Get data of all expenses"
        },
        {
          "name": "Update",
          "value": "update",
          "description": "Update an expense",
          "action": "Update an expense"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "expense"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "description": "Create an invoice",
          "action": "Create an invoice"
        },
        {
          "name": "Delete",
          "value": "delete",
          "description": "Delete an invoice",
          "action": "Delete an invoice"
        },
        {
          "name": "Get",
          "value": "get",
          "description": "Get data of an invoice",
          "action": "Get data of an invoice"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "description": "Get data of many invoices",
          "action": "Get data of all invoices"
        },
        {
          "name": "Update",
          "value": "update",
          "description": "Update an invoice",
          "action": "Update an invoice"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "invoice"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "description": "Create a project",
          "action": "Create a project"
        },
        {
          "name": "Delete",
          "value": "delete",
          "description": "Delete a project",
          "action": "Delete a project"
        },
        {
          "name": "Get",
          "value": "get",
          "description": "Get data of a project",
          "action": "Get data of a project"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "description": "Get data of many projects",
          "action": "Get data of all projects"
        },
        {
          "name": "Update",
          "value": "update",
          "description": "Update a project",
          "action": "Update a project"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "project"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "description": "Create a task",
          "action": "Create a task"
        },
        {
          "name": "Delete",
          "value": "delete",
          "description": "Delete a task",
          "action": "Delete a task"
        },
        {
          "name": "Get",
          "value": "get",
          "description": "Get data of a task",
          "action": "Get data of a task"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "description": "Get data of many tasks",
          "action": "Get data of all tasks"
        },
        {
          "name": "Update",
          "value": "update",
          "description": "Update a task",
          "action": "Update a task"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "task"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create via Duration",
          "value": "createByDuration",
          "description": "Create a time entry via duration",
          "action": "Create a time entry via duration"
        },
        {
          "name": "Create via Start and End Time",
          "value": "createByStartEnd",
          "description": "Create a time entry via start and end time",
          "action": "Create a time entry via start and end time"
        },
        {
          "name": "Delete",
          "value": "delete",
          "description": "Delete a time entry",
          "action": "Delete a time entry"
        },
        {
          "name": "Delete External Reference",
          "value": "deleteExternal",
          "description": "Delete a time entry’s external reference",
          "action": "Delete a time entry’s external reference"
        },
        {
          "name": "Get",
          "value": "get",
          "description": "Get data of a time entry",
          "action": "Get data of a time entry"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "description": "Get data of many time entries",
          "action": "Get data of all time entries"
        },
        {
          "name": "Restart",
          "value": "restartTime",
          "description": "Restart a time entry",
          "action": "Restart a time entry"
        },
        {
          "name": "Stop",
          "value": "stopTime",
          "description": "Stop a time entry",
          "action": "Stop a time entry"
        },
        {
          "name": "Update",
          "value": "update",
          "description": "Update a time entry",
          "action": "Update a time entry"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "timeEntry"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "me",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "description": "Create a user",
          "action": "Create a user"
        },
        {
          "name": "Delete",
          "value": "delete",
          "description": "Delete a user",
          "action": "Delete a user"
        },
        {
          "name": "Get",
          "value": "get",
          "description": "Get data of a user",
          "action": "Get data of a user"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "description": "Get data of many users",
          "action": "Get data of all users"
        },
        {
          "name": "Me",
          "value": "me",
          "description": "Get data of authenticated user",
          "action": "Get data of authenticated user"
        },
        {
          "name": "Update",
          "value": "update",
          "description": "Update a user",
          "action": "Update a user"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Account Name or ID",
      "name": "accountId",
      "type": "options",
      "default": "",
      "description": "Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>",
      "required": true,
      "typeOptions": {
        "loadOptionsMethod": "getAccounts"
      }
    },
    {
      "displayName": "Return All",
      "name": "returnAll",
      "type": "boolean",
      "default": false,
      "description": "Whether to return all results or only up to a given limit",
      "displayOptions": {
        "show": {
          "resource": [
            "client"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 100,
      "description": "Max number of results to return",
      "displayOptions": {
        "show": {
          "resource": [
            "client"
          ],
          "operation": [
            "getAll"
          ],
          "returnAll": [
            false
          ]
        }
      },
      "typeOptions": {
        "minValue": 1,
        "maxValue": 100
      }
    },
    {
      "displayName": "Filters",
      "name": "filters",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Is Active",
          "name": "is_active",
          "type": "boolean",
          "default": true,
          "description": "Whether to only return active clients and false to return inactive clients"
        },
        {
          "displayName": "Updated Since",
          "name": "updated_since",
          "type": "dateTime",
          "default": "",
          "description": "Only return clients that have been updated since the given date and time"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "client"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Client ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The ID of the client you are retrieving",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "get"
          ],
          "resource": [
            "client"
          ]
        }
      }
    },
    {
      "displayName": "Client ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The ID of the client you want to delete",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "delete"
          ],
          "resource": [
            "client"
          ]
        }
      }
    },
    {
      "displayName": "Name",
      "name": "name",
      "type": "string",
      "default": "",
      "description": "The name of the client",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "client"
          ]
        }
      }
    },
    {
      "displayName": "Additional Fields",
      "name": "additionalFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Address",
          "name": "address",
          "type": "string",
          "default": "",
          "description": "A textual representation of the client’s physical address. May include new line characters."
        },
        {
          "displayName": "Currency",
          "name": "currency",
          "type": "string",
          "default": "",
          "description": "The currency used by the estimate. If not provided, the client’s currency will be used. See a list of supported currencies"
        },
        {
          "displayName": "Is Active",
          "name": "is_active",
          "type": "string",
          "default": "",
          "description": "Whether the client is active, or archived. Defaults to true."
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "client"
          ]
        }
      }
    },
    {
      "displayName": "Client ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The ID of the client want to update",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "update"
          ],
          "resource": [
            "client"
          ]
        }
      }
    },
    {
      "displayName": "Update Fields",
      "name": "updateFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Address",
          "name": "address",
          "type": "string",
          "default": "",
          "description": "A textual representation of the client’s physical address. May include new line characters."
        },
        {
          "displayName": "Currency",
          "name": "currency",
          "type": "string",
          "default": "",
          "description": "The currency used by the estimate. If not provided, the client’s currency will be used. See a list of supported currencies"
        },
        {
          "displayName": "Is Active",
          "name": "is_active",
          "type": "boolean",
          "default": true,
          "description": "Whether the client is active, or archived. Defaults to true."
        },
        {
          "displayName": "Name",
          "name": "name",
          "type": "string",
          "default": "",
          "description": "Whether the client is active, or archived. Defaults to true."
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "update"
          ],
          "resource": [
            "client"
          ]
        }
      }
    },
    {
      "displayName": "Return All",
      "name": "returnAll",
      "type": "boolean",
      "default": false,
      "description": "Whether to return all results or only up to a given limit",
      "displayOptions": {
        "show": {
          "resource": [
            "contact"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 100,
      "description": "Max number of results to return",
      "displayOptions": {
        "show": {
          "resource": [
            "contact"
          ],
          "operation": [
            "getAll"
          ],
          "returnAll": [
            false
          ]
        }
      },
      "typeOptions": {
        "minValue": 1,
        "maxValue": 100
      }
    },
    {
      "displayName": "Filters",
      "name": "filters",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Is Active",
          "name": "is_active",
          "type": "boolean",
          "default": true,
          "description": "Whether to only return active clients and false to return inactive clients"
        },
        {
          "displayName": "Updated Since",
          "name": "updated_since",
          "type": "dateTime",
          "default": "",
          "description": "Only return clients that have been updated since the given date and time"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "contact"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Contact ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The ID of the contact you are retrieving",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "get"
          ],
          "resource": [
            "contact"
          ]
        }
      }
    },
    {
      "displayName": "Contact ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The ID of the contact you want to delete",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "delete"
          ],
          "resource": [
            "contact"
          ]
        }
      }
    },
    {
      "displayName": "First Name",
      "name": "firstName",
      "type": "string",
      "default": "",
      "description": "The first name of the contact",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "contact"
          ]
        }
      }
    },
    {
      "displayName": "Client ID",
      "name": "clientId",
      "type": "string",
      "default": "",
      "description": "The ID of the client associated with this contact",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "contact"
          ]
        }
      }
    },
    {
      "displayName": "Additional Fields",
      "name": "additionalFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Email",
          "name": "email",
          "type": "string",
          "placeholder": "name@email.com",
          "default": "",
          "description": "The contact’s email address"
        },
        {
          "displayName": "Fax",
          "name": "fax",
          "type": "string",
          "default": "",
          "description": "The contact’s fax number"
        },
        {
          "displayName": "Last Name",
          "name": "last_name",
          "type": "string",
          "default": "",
          "description": "The last name of the contact"
        },
        {
          "displayName": "Phone Mobile",
          "name": "phone_mobile",
          "type": "string",
          "default": "",
          "description": "The contact’s mobile phone number"
        },
        {
          "displayName": "Phone Office",
          "name": "phone_office",
          "type": "string",
          "default": "",
          "description": "The contact’s office phone number"
        },
        {
          "displayName": "Title",
          "name": "title",
          "type": "string",
          "default": "",
          "description": "The title of the contact"
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "contact"
          ]
        }
      }
    },
    {
      "displayName": "Contact ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The ID of the contact want to update",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "update"
          ],
          "resource": [
            "contact"
          ]
        }
      }
    },
    {
      "displayName": "Update Fields",
      "name": "updateFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Client ID",
          "name": "client_id",
          "type": "string",
          "default": "",
          "description": "The ID of the client associated with this contact"
        },
        {
          "displayName": "Email",
          "name": "email",
          "type": "string",
          "placeholder": "name@email.com",
          "default": "",
          "description": "The contact’s email address"
        },
        {
          "displayName": "Fax",
          "name": "fax",
          "type": "string",
          "default": "",
          "description": "The contact’s fax number"
        },
        {
          "displayName": "First Name",
          "name": "first_name",
          "type": "string",
          "default": "",
          "description": "The first name of the contact"
        },
        {
          "displayName": "Last Name",
          "name": "last_name",
          "type": "string",
          "default": "",
          "description": "The last name of the contact"
        },
        {
          "displayName": "Phone Mobile",
          "name": "phone_mobile",
          "type": "string",
          "default": "",
          "description": "The contact’s mobile phone number"
        },
        {
          "displayName": "Phone Office",
          "name": "phone_office",
          "type": "string",
          "default": "",
          "description": "The contact’s office phone number"
        },
        {
          "displayName": "Title",
          "name": "title",
          "type": "string",
          "default": "",
          "description": "The title of the contact"
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "update"
          ],
          "resource": [
            "contact"
          ]
        }
      }
    },
    {
      "displayName": "Return All",
      "name": "returnAll",
      "type": "boolean",
      "default": false,
      "description": "Whether to return all results or only up to a given limit",
      "displayOptions": {
        "show": {
          "resource": [
            "estimate"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 100,
      "description": "Max number of results to return",
      "displayOptions": {
        "show": {
          "resource": [
            "estimate"
          ],
          "operation": [
            "getAll"
          ],
          "returnAll": [
            false
          ]
        }
      },
      "typeOptions": {
        "minValue": 1,
        "maxValue": 100
      }
    },
    {
      "displayName": "Filters",
      "name": "filters",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Client ID",
          "name": "client_id",
          "type": "string",
          "default": "",
          "description": "Only return time entries belonging to the client with the given ID"
        },
        {
          "displayName": "From",
          "name": "from",
          "type": "dateTime",
          "default": "",
          "description": "Only return time entries with a spent_date on or after the given date"
        },
        {
          "displayName": "State",
          "name": "state",
          "type": "string",
          "default": "",
          "description": "Only return estimates with a state matching the value provided. Options: draft, sent, accepted, or declined."
        },
        {
          "displayName": "To",
          "name": "to",
          "type": "dateTime",
          "default": "",
          "description": "Only return time entries with a spent_date on or before the given date"
        },
        {
          "displayName": "Updated Since",
          "name": "updated_since",
          "type": "dateTime",
          "default": "",
          "description": "Only return time entries that have been updated since the given date and time"
        },
        {
          "displayName": "Page",
          "name": "page",
          "type": "number",
          "typeOptions": {
            "minValue": 1
          },
          "default": 1,
          "description": "The page number to use in pagination. For instance, if you make a list request and receive 100 records, your subsequent call can include page=2 to retrieve the next page of the list. (Default: 1)"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "estimate"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Estimate ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The ID of the estimate you are retrieving",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "get"
          ],
          "resource": [
            "estimate"
          ]
        }
      }
    },
    {
      "displayName": "Estimate ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The ID of the estimate want to delete",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "delete"
          ],
          "resource": [
            "estimate"
          ]
        }
      }
    },
    {
      "displayName": "Client ID",
      "name": "clientId",
      "type": "string",
      "default": "",
      "description": "The ID of the client this estimate belongs to",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "estimate"
          ]
        }
      }
    },
    {
      "displayName": "Additional Fields",
      "name": "additionalFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Currency",
          "name": "currency",
          "type": "string",
          "default": "",
          "description": "The currency used by the estimate. If not provided, the client’s currency will be used. See a list of supported currencies"
        },
        {
          "displayName": "Discount",
          "name": "over_budget_notification_percentage",
          "type": "string",
          "default": "",
          "description": "This percentage is subtracted from the subtotal. Example: use 10.0 for 10.0%."
        },
        {
          "displayName": "Issue Date",
          "name": "issue_date",
          "type": "dateTime",
          "default": "",
          "description": "Date the invoice was issued. Defaults to today’s date."
        },
        {
          "displayName": "Notes",
          "name": "notes",
          "type": "string",
          "default": "",
          "description": "Any additional notes to include on the estimate"
        },
        {
          "displayName": "Number",
          "name": "number",
          "type": "string",
          "default": "",
          "description": "If no value is set, the number will be automatically generated"
        },
        {
          "displayName": "Purchase Order",
          "name": "purchase_order",
          "type": "string",
          "default": "",
          "description": "The purchase order number"
        },
        {
          "displayName": "Subject",
          "name": "subject",
          "type": "string",
          "default": "",
          "description": "The estimate subject"
        },
        {
          "displayName": "Tax",
          "name": "tax",
          "type": "string",
          "default": "",
          "description": "This percentage is applied to the subtotal, including line items and discounts. Example: use 10.0 for 10.0%."
        },
        {
          "displayName": "Tax2",
          "name": "tax2",
          "type": "string",
          "default": "",
          "description": "This percentage is applied to the subtotal, including line items and discounts. Example: use 10.0 for 10.0%."
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "estimate"
          ]
        }
      }
    },
    {
      "displayName": "Invoice ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The ID of the invoice want to update",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "update"
          ],
          "resource": [
            "estimate"
          ]
        }
      }
    },
    {
      "displayName": "Update Fields",
      "name": "updateFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Client ID",
          "name": "client_id",
          "type": "string",
          "default": "",
          "description": "The ID of the retainer associated with this invoice"
        },
        {
          "displayName": "Currency",
          "name": "currency",
          "type": "string",
          "default": "",
          "description": "The currency used by the estimate. If not provided, the client’s currency will be used. See a list of supported currencies"
        },
        {
          "displayName": "Discount",
          "name": "over_budget_notification_percentage",
          "type": "string",
          "default": "",
          "description": "This percentage is subtracted from the subtotal. Example: use 10.0 for 10.0%."
        },
        {
          "displayName": "Issue Date",
          "name": "issue_date",
          "type": "dateTime",
          "default": "",
          "description": "Date the invoice was issued. Defaults to today’s date."
        },
        {
          "displayName": "Number",
          "name": "number",
          "type": "string",
          "default": "",
          "description": "If no value is set, the number will be automatically generated"
        },
        {
          "displayName": "Notes",
          "name": "notes",
          "type": "string",
          "default": "",
          "description": "Any additional notes to include on the estimate"
        },
        {
          "displayName": "Purchase Order",
          "name": "purchase_order",
          "type": "string",
          "default": "",
          "description": "The purchase order number"
        },
        {
          "displayName": "Subject",
          "name": "subject",
          "type": "string",
          "default": "",
          "description": "The estimate subject"
        },
        {
          "displayName": "Tax",
          "name": "tax",
          "type": "string",
          "default": "",
          "description": "This percentage is applied to the subtotal, including line items and discounts. Example: use 10.0 for 10.0%."
        },
        {
          "displayName": "Tax2",
          "name": "tax2",
          "type": "string",
          "default": "",
          "description": "This percentage is applied to the subtotal, including line items and discounts. Example: use 10.0 for 10.0%."
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "update"
          ],
          "resource": [
            "estimate"
          ]
        }
      }
    },
    {
      "displayName": "Return All",
      "name": "returnAll",
      "type": "boolean",
      "default": false,
      "description": "Whether to return all results or only up to a given limit",
      "displayOptions": {
        "show": {
          "resource": [
            "expense"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 100,
      "description": "Max number of results to return",
      "displayOptions": {
        "show": {
          "resource": [
            "expense"
          ],
          "operation": [
            "getAll"
          ],
          "returnAll": [
            false
          ]
        }
      },
      "typeOptions": {
        "minValue": 1,
        "maxValue": 100
      }
    },
    {
      "displayName": "Filters",
      "name": "filters",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Client ID",
          "name": "client_id",
          "type": "string",
          "default": "",
          "description": "Only return time entries belonging to the client with the given ID"
        },
        {
          "displayName": "From",
          "name": "from",
          "type": "dateTime",
          "default": "",
          "description": "Only return time entries with a spent_date on or after the given date"
        },
        {
          "displayName": "Is Billed",
          "name": "is_billed",
          "type": "boolean",
          "default": false,
          "description": "Whether to only return time entries that have been invoiced and false to return time entries that have not been invoiced"
        },
        {
          "displayName": "Page",
          "name": "page",
          "type": "number",
          "typeOptions": {
            "minValue": 1
          },
          "default": 1,
          "description": "The page number to use in pagination. For instance, if you make a list request and receive 100 records, your subsequent call can include page=2 to retrieve the next page of the list. (Default: 1)"
        },
        {
          "displayName": "Project ID",
          "name": "project_id",
          "type": "string",
          "default": "",
          "description": "Only return time entries belonging to the client with the given ID"
        },
        {
          "displayName": "To",
          "name": "to",
          "type": "dateTime",
          "default": "",
          "description": "Only return time entries with a spent_date on or before the given date"
        },
        {
          "displayName": "Updated Since",
          "name": "updated_since",
          "type": "dateTime",
          "default": "",
          "description": "Only return time entries that have been updated since the given date and time"
        },
        {
          "displayName": "User ID",
          "name": "user_id",
          "type": "string",
          "default": "",
          "description": "Only return time entries belonging to the user with the given ID"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "expense"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Expense ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The ID of the expense you are retrieving",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "get"
          ],
          "resource": [
            "expense"
          ]
        }
      }
    },
    {
      "displayName": "Expense ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The ID of the expense you want to delete",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "delete"
          ],
          "resource": [
            "expense"
          ]
        }
      }
    },
    {
      "displayName": "Project ID",
      "name": "projectId",
      "type": "string",
      "default": "",
      "description": "The ID of the project associated with this expense",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "expense"
          ]
        }
      }
    },
    {
      "displayName": "Expense Category ID",
      "name": "expenseCategoryId",
      "type": "string",
      "default": "",
      "description": "The ID of the expense category this expense is being tracked against",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "expense"
          ]
        }
      }
    },
    {
      "displayName": "Spent Date",
      "name": "spentDate",
      "type": "dateTime",
      "default": "",
      "description": "Date the expense occurred",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "expense"
          ]
        }
      }
    },
    {
      "displayName": "Additional Fields",
      "name": "additionalFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Billable",
          "name": "billable",
          "type": "boolean",
          "default": true,
          "description": "Whether this expense is billable or not. Defaults to true."
        },
        {
          "displayName": "Notes",
          "name": "notes",
          "type": "string",
          "default": "",
          "description": "Notes about the expense"
        },
        {
          "displayName": "Total Cost",
          "name": "total_cost",
          "type": "string",
          "default": "",
          "description": "The total amount of the expense"
        },
        {
          "displayName": "Units",
          "name": "units",
          "type": "string",
          "default": "",
          "description": "The quantity of units to use in calculating the total_cost of the expense"
        },
        {
          "displayName": "User ID",
          "name": "user_id",
          "type": "boolean",
          "default": true,
          "description": "The ID of the user associated with this expense. Defaults to the ID of the currently authenticated user."
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "expense"
          ]
        }
      }
    },
    {
      "displayName": "Invoice ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The ID of the invoice want to update",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "update"
          ],
          "resource": [
            "expense"
          ]
        }
      }
    },
    {
      "displayName": "Update Fields",
      "name": "updateFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Billable",
          "name": "billable",
          "type": "boolean",
          "default": true,
          "description": "Whether this expense is billable or not. Defaults to true."
        },
        {
          "displayName": "Expense Category ID",
          "name": "expense_category_id",
          "type": "string",
          "default": "",
          "description": "The ID of the expense category this expense is being tracked against"
        },
        {
          "displayName": "Notes",
          "name": "notes",
          "type": "string",
          "default": "",
          "description": "Notes about the expense"
        },
        {
          "displayName": "Project ID",
          "name": "project_id",
          "type": "string",
          "default": "",
          "description": "The ID of the project associated with this expense"
        },
        {
          "displayName": "Spent Date",
          "name": "spent_date",
          "type": "dateTime",
          "default": "",
          "description": "Date the expense occurred"
        },
        {
          "displayName": "Total Cost",
          "name": "total_cost",
          "type": "string",
          "default": "",
          "description": "The total amount of the expense"
        },
        {
          "displayName": "Units",
          "name": "units",
          "type": "string",
          "default": "",
          "description": "The quantity of units to use in calculating the total_cost of the expense"
        },
        {
          "displayName": "User ID",
          "name": "user_id",
          "type": "boolean",
          "default": true,
          "description": "The ID of the user associated with this expense. Defaults to the ID of the currently authenticated user."
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "update"
          ],
          "resource": [
            "expense"
          ]
        }
      }
    },
    {
      "displayName": "Return All",
      "name": "returnAll",
      "type": "boolean",
      "default": false,
      "description": "Whether to return all results or only up to a given limit",
      "displayOptions": {
        "show": {
          "resource": [
            "invoice"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 100,
      "description": "Max number of results to return",
      "displayOptions": {
        "show": {
          "resource": [
            "invoice"
          ],
          "operation": [
            "getAll"
          ],
          "returnAll": [
            false
          ]
        }
      },
      "typeOptions": {
        "minValue": 1,
        "maxValue": 100
      }
    },
    {
      "displayName": "Filters",
      "name": "filters",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Client ID",
          "name": "client_id",
          "type": "string",
          "default": "",
          "description": "Only return time entries belonging to the client with the given ID"
        },
        {
          "displayName": "From",
          "name": "from",
          "type": "dateTime",
          "default": "",
          "description": "Only return time entries with a spent_date on or after the given date"
        },
        {
          "displayName": "Page",
          "name": "page",
          "type": "number",
          "typeOptions": {
            "minValue": 1
          },
          "default": 1,
          "description": "The page number to use in pagination. For instance, if you make a list request and receive 100 records, your subsequent call can include page=2 to retrieve the next page of the list. (Default: 1)"
        },
        {
          "displayName": "Project ID",
          "name": "project_id",
          "type": "string",
          "default": "",
          "description": "Only return time entries belonging to the client with the given ID"
        },
        {
          "displayName": "State",
          "name": "state",
          "type": "multiOptions",
          "options": [
            {
              "name": "Draft",
              "value": "draft"
            },
            {
              "name": "Open",
              "value": "open"
            },
            {
              "name": "Paid",
              "value": "paid"
            },
            {
              "name": "Closed",
              "value": "closed"
            }
          ],
          "default": [],
          "description": "Only return invoices with a state matching the value provided. Options: draft, open, paid, or closed."
        },
        {
          "displayName": "To",
          "name": "to",
          "type": "dateTime",
          "default": "",
          "description": "Only return time entries with a spent_date on or before the given date"
        },
        {
          "displayName": "Updated Since",
          "name": "updated_since",
          "type": "dateTime",
          "default": "",
          "description": "Only return time entries that have been updated since the given date and time"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "invoice"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Invoice ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The ID of the invoice you are retrieving",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "get"
          ],
          "resource": [
            "invoice"
          ]
        }
      }
    },
    {
      "displayName": "Invoice ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The ID of the invoice want to delete",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "delete"
          ],
          "resource": [
            "invoice"
          ]
        }
      }
    },
    {
      "displayName": "Client ID",
      "name": "clientId",
      "type": "string",
      "default": "",
      "description": "The ID of the retainer associated with this invoice",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "invoice"
          ]
        }
      }
    },
    {
      "displayName": "Additional Fields",
      "name": "additionalFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Currency",
          "name": "currency",
          "type": "string",
          "default": "",
          "description": "The currency used by the invoice. If not provided, the client’s currency will be used. See a list of supported currencies"
        },
        {
          "displayName": "Discount",
          "name": "over_budget_notification_percentage",
          "type": "string",
          "default": "",
          "description": "This percentage is subtracted from the subtotal. Example: use 10.0 for 10.0%."
        },
        {
          "displayName": "Due Date",
          "name": "ends_on",
          "type": "dateTime",
          "default": "",
          "description": "Date the invoice is due. Defaults to the issue_date if no payment_term is specified."
        },
        {
          "displayName": "Estimate ID",
          "name": "estimate_id",
          "type": "string",
          "default": "",
          "description": "The ID of the estimate associated with this invoice"
        },
        {
          "displayName": "Issue Date",
          "name": "issue_date",
          "type": "dateTime",
          "default": "",
          "description": "Date the invoice was issued. Defaults to today’s date."
        },
        {
          "displayName": "Notes",
          "name": "notes",
          "type": "string",
          "default": "",
          "description": "Notes about the project"
        },
        {
          "displayName": "Number",
          "name": "number",
          "type": "string",
          "default": "",
          "description": "If no value is set, the number will be automatically generated"
        },
        {
          "displayName": "Payment Term",
          "name": "payment_term",
          "type": "string",
          "default": "",
          "description": "The timeframe in which the invoice should be paid. Defaults to custom. Options: upon receipt, net 15, net 30, net 45, or net 60."
        },
        {
          "displayName": "Purchase Order",
          "name": "purchase_order",
          "type": "string",
          "default": "",
          "description": "The purchase order number"
        },
        {
          "displayName": "Retainer ID",
          "name": "retainer_id",
          "type": "boolean",
          "default": true,
          "description": "The ID of the retainer associated with this invoice"
        },
        {
          "displayName": "Subject",
          "name": "subject",
          "type": "string",
          "default": "",
          "description": "The invoice subject"
        },
        {
          "displayName": "Tax",
          "name": "tax",
          "type": "string",
          "default": "",
          "description": "This percentage is applied to the subtotal, including line items and discounts. Example: use 10.0 for 10.0%."
        },
        {
          "displayName": "Tax2",
          "name": "tax2",
          "type": "string",
          "default": "",
          "description": "This percentage is applied to the subtotal, including line items and discounts. Example: use 10.0 for 10.0%."
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "invoice"
          ]
        }
      }
    },
    {
      "displayName": "Invoice ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The ID of the invoice want to update",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "update"
          ],
          "resource": [
            "invoice"
          ]
        }
      }
    },
    {
      "displayName": "Update Fields",
      "name": "updateFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Client ID",
          "name": "client_id",
          "type": "string",
          "default": "",
          "description": "The ID of the retainer associated with this invoice"
        },
        {
          "displayName": "Currency",
          "name": "currency",
          "type": "string",
          "default": "",
          "description": "The currency used by the invoice. If not provided, the client’s currency will be used. See a list of supported currencies"
        },
        {
          "displayName": "Discount",
          "name": "over_budget_notification_percentage",
          "type": "string",
          "default": "",
          "description": "This percentage is subtracted from the subtotal. Example: use 10.0 for 10.0%."
        },
        {
          "displayName": "Due Date",
          "name": "ends_on",
          "type": "dateTime",
          "default": "",
          "description": "Date the invoice is due. Defaults to the issue_date if no payment_term is specified."
        },
        {
          "displayName": "Estimate ID",
          "name": "estimate_id",
          "type": "string",
          "default": "",
          "description": "The ID of the estimate associated with this invoice"
        },
        {
          "displayName": "Issue Date",
          "name": "issue_date",
          "type": "dateTime",
          "default": "",
          "description": "Date the invoice was issued. Defaults to today’s date."
        },
        {
          "displayName": "Notes",
          "name": "notes",
          "type": "string",
          "default": "",
          "description": "Notes about the project"
        },
        {
          "displayName": "Number",
          "name": "number",
          "type": "string",
          "default": "",
          "description": "If no value is set, the number will be automatically generated"
        },
        {
          "displayName": "Payment Term",
          "name": "payment_term",
          "type": "string",
          "default": "",
          "description": "The timeframe in which the invoice should be paid. Defaults to custom. Options: upon receipt, net 15, net 30, net 45, or net 60."
        },
        {
          "displayName": "Purchase Order",
          "name": "purchase_order",
          "type": "string",
          "default": "",
          "description": "The purchase order number"
        },
        {
          "displayName": "Retainer ID",
          "name": "retainer_id",
          "type": "boolean",
          "default": true,
          "description": "The ID of the retainer associated with this invoice"
        },
        {
          "displayName": "Subject",
          "name": "subject",
          "type": "string",
          "default": "",
          "description": "The invoice subject"
        },
        {
          "displayName": "Tax",
          "name": "tax",
          "type": "string",
          "default": "",
          "description": "This percentage is applied to the subtotal, including line items and discounts. Example: use 10.0 for 10.0%."
        },
        {
          "displayName": "Tax2",
          "name": "tax2",
          "type": "string",
          "default": "",
          "description": "This percentage is applied to the subtotal, including line items and discounts. Example: use 10.0 for 10.0%."
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "update"
          ],
          "resource": [
            "invoice"
          ]
        }
      }
    },
    {
      "displayName": "Return All",
      "name": "returnAll",
      "type": "boolean",
      "default": false,
      "description": "Whether to return all results or only up to a given limit",
      "displayOptions": {
        "show": {
          "resource": [
            "project"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 100,
      "description": "Max number of results to return",
      "displayOptions": {
        "show": {
          "resource": [
            "project"
          ],
          "operation": [
            "getAll"
          ],
          "returnAll": [
            false
          ]
        }
      },
      "typeOptions": {
        "minValue": 1,
        "maxValue": 100
      }
    },
    {
      "displayName": "Filters",
      "name": "filters",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Client ID",
          "name": "client_id",
          "type": "string",
          "default": "",
          "description": "Only return projects belonging to the client with the given ID"
        },
        {
          "displayName": "Is Active",
          "name": "is_active",
          "type": "boolean",
          "default": true,
          "description": "Whether to only return active projects and false to return inactive projects"
        },
        {
          "displayName": "Page",
          "name": "page",
          "type": "number",
          "typeOptions": {
            "minValue": 1
          },
          "default": 1,
          "description": "The page number to use in pagination"
        },
        {
          "displayName": "Updated Since",
          "name": "updated_since",
          "type": "dateTime",
          "default": "",
          "description": "Only return projects by updated_since"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "project"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Project ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The ID of the project you are retrieving",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "get"
          ],
          "resource": [
            "project"
          ]
        }
      }
    },
    {
      "displayName": "Project ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The ID of the project want to delete",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "delete"
          ],
          "resource": [
            "project"
          ]
        }
      }
    },
    {
      "displayName": "Name",
      "name": "name",
      "type": "string",
      "default": "",
      "description": "The name of the project",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "project"
          ]
        }
      }
    },
    {
      "displayName": "Client ID",
      "name": "clientId",
      "type": "string",
      "default": "",
      "description": "The ID of the client to associate this project with",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "project"
          ]
        }
      }
    },
    {
      "displayName": "Is Billable",
      "name": "isBillable",
      "type": "boolean",
      "default": true,
      "description": "Whether the project is billable or not",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "project"
          ]
        }
      }
    },
    {
      "displayName": "Bill By",
      "name": "billBy",
      "type": "options",
      "default": "none",
      "description": "The method by which the project is invoiced",
      "options": [
        {
          "name": "None",
          "value": "none"
        },
        {
          "name": "People",
          "value": "People"
        },
        {
          "name": "Project",
          "value": "Project"
        },
        {
          "name": "Tasks",
          "value": "Tasks"
        }
      ],
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "project"
          ]
        }
      }
    },
    {
      "displayName": "Budget By",
      "name": "budgetBy",
      "type": "string",
      "default": "none",
      "description": "The email of the user or \"none\"",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "project"
          ]
        }
      }
    },
    {
      "displayName": "Additional Fields",
      "name": "additionalFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Budget",
          "name": "budget",
          "type": "number",
          "typeOptions": {
            "minValue": 0
          },
          "default": 0,
          "description": "The budget in hours for the project when budgeting by time"
        },
        {
          "displayName": "Budget Is Monthly",
          "name": "budget_is_monthly",
          "type": "boolean",
          "default": false,
          "description": "Whether the budget resets every month. Defaults to false."
        },
        {
          "displayName": "Cost Budget",
          "name": "cost_budget",
          "type": "string",
          "default": "",
          "description": "The monetary budget for the project when budgeting by money"
        },
        {
          "displayName": "Cost Budget Include Expenses",
          "name": "cost_budget_include_expenses",
          "type": "boolean",
          "default": false,
          "description": "Option for budget of Total Project Fees projects to include tracked expenses. Defaults to false."
        },
        {
          "displayName": "Ends On",
          "name": "ends_on",
          "type": "dateTime",
          "default": "",
          "description": "Date the project will end"
        },
        {
          "displayName": "Fee",
          "name": "fee",
          "type": "string",
          "default": "",
          "description": "The amount you plan to invoice for the project. Only used by fixed-fee projects."
        },
        {
          "displayName": "Hourly Rate",
          "name": "hourly_rate",
          "type": "string",
          "default": "",
          "description": "Rate for projects billed by Project Hourly Rate"
        },
        {
          "displayName": "Is Active",
          "name": "is_active",
          "type": "boolean",
          "default": true,
          "description": "Whether the project is active or archived. Defaults to true."
        },
        {
          "displayName": "Is Fixed Fee",
          "name": "is_fixed_fee",
          "type": "boolean",
          "default": false,
          "description": "Whether the project is a fixed-fee project or not"
        },
        {
          "displayName": "Notes",
          "name": "notes",
          "type": "string",
          "default": "",
          "description": "Notes about the project"
        },
        {
          "displayName": "Notify When Over Budget",
          "name": "notify_when_over_budget",
          "type": "boolean",
          "default": false,
          "description": "Whether project managers should be notified when the project goes over budget. Defaults to false."
        },
        {
          "displayName": "Over Budget Notification Percentage",
          "name": "over_budget_notification_percentage",
          "type": "string",
          "default": "",
          "description": "Percentage value used to trigger over budget email alerts. Example: use 10.0 for 10.0%."
        },
        {
          "displayName": "Show Budget To All",
          "name": "show_budget_to_all",
          "type": "boolean",
          "default": false,
          "description": "Whether to show project budget to all employees. Does not apply to Total Project Fee projects. Defaults to false."
        },
        {
          "displayName": "Starts On",
          "name": "starts_on",
          "type": "dateTime",
          "default": "",
          "description": "Date the project was started"
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "project"
          ]
        }
      }
    },
    {
      "displayName": "Project ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The ID of the project want to update",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "update"
          ],
          "resource": [
            "project"
          ]
        }
      }
    },
    {
      "displayName": "Update Fields",
      "name": "updateFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Bill By",
          "name": "bill_by",
          "type": "options",
          "options": [
            {
              "name": "None",
              "value": "none"
            },
            {
              "name": "People",
              "value": "People"
            },
            {
              "name": "Project",
              "value": "Project"
            },
            {
              "name": "Tasks",
              "value": "Tasks"
            }
          ],
          "default": "none",
          "description": "The method by which the project is invoiced"
        },
        {
          "displayName": "Budget",
          "name": "budget",
          "type": "string",
          "default": "",
          "description": "The budget in hours for the project when budgeting by time"
        },
        {
          "displayName": "Budget By",
          "name": "budget_by",
          "type": "string",
          "default": "",
          "description": "The email of the user or \"none\""
        },
        {
          "displayName": "Budget Is Monthly",
          "name": "budget_is_monthly",
          "type": "boolean",
          "default": false,
          "description": "Whether to have the budget reset every month. Defaults to false."
        },
        {
          "displayName": "Client ID",
          "name": "client_id",
          "type": "string",
          "default": "",
          "description": "The ID of the client to associate this project with"
        },
        {
          "displayName": "Cost Budget",
          "name": "cost_budget",
          "type": "string",
          "default": "",
          "description": "The monetary budget for the project when budgeting by money"
        },
        {
          "displayName": "Cost Budget Include Expenses",
          "name": "cost_budget_include_expenses",
          "type": "boolean",
          "default": false,
          "description": "Option for budget of Total Project Fees projects to include tracked expenses. Defaults to false."
        },
        {
          "displayName": "Ends On",
          "name": "ends_on",
          "type": "dateTime",
          "default": "",
          "description": "Date the project will end"
        },
        {
          "displayName": "Fee",
          "name": "fee",
          "type": "string",
          "default": "",
          "description": "The amount you plan to invoice for the project. Only used by fixed-fee projects."
        },
        {
          "displayName": "Hourly Rate",
          "name": "hourly_rate",
          "type": "string",
          "default": "",
          "description": "Rate for projects billed by Project Hourly Rate"
        },
        {
          "displayName": "Is Active",
          "name": "is_active",
          "type": "boolean",
          "default": true,
          "description": "Whether the project is active or archived. Defaults to true."
        },
        {
          "displayName": "Is Billable",
          "name": "is_billable",
          "type": "boolean",
          "default": true,
          "description": "Whether the project is billable or not"
        },
        {
          "displayName": "Is Fixed Fee",
          "name": "is_fixed_fee",
          "type": "boolean",
          "default": false,
          "description": "Whether the project is a fixed-fee project or not"
        },
        {
          "displayName": "Name",
          "name": "name",
          "type": "string",
          "default": "",
          "description": "The name of the project"
        },
        {
          "displayName": "Notes",
          "name": "notes",
          "type": "string",
          "default": "",
          "description": "Notes about the project"
        },
        {
          "displayName": "Notify When Over Budget",
          "name": "notify_when_over_budget",
          "type": "boolean",
          "default": false,
          "description": "Whether project managers should be notified when the project goes over budget. Defaults to false."
        },
        {
          "displayName": "Over Budget Notification Percentage",
          "name": "over_budget_notification_percentage",
          "type": "string",
          "default": "",
          "description": "Percentage value used to trigger over budget email alerts. Example: use 10.0 for 10.0%."
        },
        {
          "displayName": "Show Budget To All",
          "name": "show_budget_to_all",
          "type": "boolean",
          "default": false,
          "description": "Whether to show project budget to all employees. Does not apply to Total Project Fee projects. Defaults to false."
        },
        {
          "displayName": "Starts On",
          "name": "starts_on",
          "type": "dateTime",
          "default": "",
          "description": "Date the project was started"
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "update"
          ],
          "resource": [
            "project"
          ]
        }
      }
    },
    {
      "displayName": "Return All",
      "name": "returnAll",
      "type": "boolean",
      "default": false,
      "description": "Whether to return all results or only up to a given limit",
      "displayOptions": {
        "show": {
          "resource": [
            "task"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 100,
      "description": "Max number of results to return",
      "displayOptions": {
        "show": {
          "resource": [
            "task"
          ],
          "operation": [
            "getAll"
          ],
          "returnAll": [
            false
          ]
        }
      },
      "typeOptions": {
        "minValue": 1,
        "maxValue": 100
      }
    },
    {
      "displayName": "Filters",
      "name": "filters",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Is Active",
          "name": "is_active",
          "type": "boolean",
          "default": true,
          "description": "Whether to only return active tasks and false to return inactive tasks"
        },
        {
          "displayName": "Page",
          "name": "page",
          "type": "number",
          "typeOptions": {
            "minValue": 1
          },
          "default": 1,
          "description": "The page number to use in pagination"
        },
        {
          "displayName": "Updated Since",
          "name": "updated_since",
          "type": "dateTime",
          "default": "",
          "description": "Only return tasks belonging to the task with the given ID"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "task"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Task ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The ID of the task you are retrieving",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "get"
          ],
          "resource": [
            "task"
          ]
        }
      }
    },
    {
      "displayName": "Task ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The ID of the task you want to delete",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "delete"
          ],
          "resource": [
            "task"
          ]
        }
      }
    },
    {
      "displayName": "Name",
      "name": "name",
      "type": "string",
      "default": "",
      "description": "The name of the task",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "task"
          ]
        }
      }
    },
    {
      "displayName": "Additional Fields",
      "name": "additionalFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Billable By Default",
          "name": "billable_by_default",
          "type": "boolean",
          "default": true,
          "description": "Whether default tasks should be marked billable when creating a new project. Defaults to true."
        },
        {
          "displayName": "Default Hourly Rate",
          "name": "default_hourly_rate",
          "type": "number",
          "default": 0,
          "description": "The default hourly rate to use for this task when it is added to a project. Defaults to 0."
        },
        {
          "displayName": "Is Active",
          "name": "is_active",
          "type": "boolean",
          "default": true,
          "description": "Whether this task is active or archived. Defaults to true."
        },
        {
          "displayName": "Is Default",
          "name": "is_default",
          "type": "boolean",
          "default": false,
          "description": "Whether this task should be automatically added to future projects. Defaults to false."
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "task"
          ]
        }
      }
    },
    {
      "displayName": "Task ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The ID of the task you want to update",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "update"
          ],
          "resource": [
            "task"
          ]
        }
      }
    },
    {
      "displayName": "Update Fields",
      "name": "updateFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Billable By Default",
          "name": "billable_by_default",
          "type": "boolean",
          "default": false,
          "description": "Whether default tasks should be marked billable when creating a new project. Defaults to true."
        },
        {
          "displayName": "Default Hourly Rate",
          "name": "default_hourly_rate",
          "type": "number",
          "default": 0,
          "description": "The default hourly rate to use for this task when it is added to a project. Defaults to 0."
        },
        {
          "displayName": "Is Active",
          "name": "is_active",
          "type": "boolean",
          "default": true,
          "description": "Whether this task is active or archived. Defaults to true."
        },
        {
          "displayName": "Is Default",
          "name": "is_default",
          "type": "boolean",
          "default": false,
          "description": "Whether this task should be automatically added to future projects. Defaults to false."
        },
        {
          "displayName": "Name",
          "name": "name",
          "type": "string",
          "default": "",
          "description": "Name of the task"
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "update"
          ],
          "resource": [
            "task"
          ]
        }
      }
    },
    {
      "displayName": "Return All",
      "name": "returnAll",
      "type": "boolean",
      "default": false,
      "description": "Whether to return all results or only up to a given limit",
      "displayOptions": {
        "show": {
          "resource": [
            "timeEntry"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 100,
      "description": "Max number of results to return",
      "displayOptions": {
        "show": {
          "resource": [
            "timeEntry"
          ],
          "operation": [
            "getAll"
          ],
          "returnAll": [
            false
          ]
        }
      },
      "typeOptions": {
        "minValue": 1,
        "maxValue": 100
      }
    },
    {
      "displayName": "Filters",
      "name": "filters",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Client ID",
          "name": "client_id",
          "type": "string",
          "default": "",
          "description": "Only return time entries belonging to the client with the given ID"
        },
        {
          "displayName": "From",
          "name": "from",
          "type": "dateTime",
          "default": "",
          "description": "Only return time entries with a spent_date on or after the given date"
        },
        {
          "displayName": "Is Billed",
          "name": "is_billed",
          "type": "boolean",
          "default": true,
          "description": "Whether to only return time entries that have been invoiced and false to return time entries that have not been invoiced"
        },
        {
          "displayName": "Is Running",
          "name": "is_running",
          "type": "boolean",
          "default": true,
          "description": "Whether to only return running time entries and false to return non-running time entries"
        },
        {
          "displayName": "Page",
          "name": "page",
          "type": "number",
          "typeOptions": {
            "minValue": 1
          },
          "default": 1,
          "description": "The page number to use in pagination. For instance, if you make a list request and receive 100 records, your subsequent call can include page=2 to retrieve the next page of the list. (Default: 1)"
        },
        {
          "displayName": "To",
          "name": "to",
          "type": "dateTime",
          "default": "",
          "description": "Only return time entries with a spent_date on or before the given date"
        },
        {
          "displayName": "Updated Since",
          "name": "updated_since",
          "type": "dateTime",
          "default": "",
          "description": "Only return time entries that have been updated since the given date and time"
        },
        {
          "displayName": "User ID",
          "name": "user_id",
          "type": "string",
          "default": "",
          "description": "Only return time entries belonging to the user with the given ID"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "timeEntry"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Time Entry ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The ID of the time entry you are retrieving",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "get"
          ],
          "resource": [
            "timeEntry"
          ]
        }
      }
    },
    {
      "displayName": "Time Entry ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The ID of the time entry you are deleting",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "delete"
          ],
          "resource": [
            "timeEntry"
          ]
        }
      }
    },
    {
      "displayName": "Time Entry ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The ID of the time entry whose external reference you are deleting",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "deleteExternal"
          ],
          "resource": [
            "timeEntry"
          ]
        }
      }
    },
    {
      "displayName": "Time Entry ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "Stop a running time entry. Stopping a time entry is only possible if it’s currently running.",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "stopTime"
          ],
          "resource": [
            "timeEntry"
          ]
        }
      }
    },
    {
      "displayName": "Time Entry ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "Restart a stopped time entry. Restarting a time entry is only possible if it isn’t currently running.",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "restartTime"
          ],
          "resource": [
            "timeEntry"
          ]
        }
      }
    },
    {
      "displayName": "Time Entry ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The ID of the time entry to update",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "update"
          ],
          "resource": [
            "timeEntry"
          ]
        }
      }
    },
    {
      "displayName": "Update Fields",
      "name": "updateFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Ended Time",
          "name": "ended_time",
          "type": "string",
          "default": "",
          "placeholder": "3:00pm",
          "description": "The time the entry ended"
        },
        {
          "displayName": "Hours",
          "name": "hours",
          "type": "number",
          "typeOptions": {
            "minValue": 0
          },
          "default": 0,
          "description": "The current amount of time tracked"
        },
        {
          "displayName": "Notes",
          "name": "notes",
          "type": "string",
          "default": "",
          "description": "These are notes about the time entry"
        },
        {
          "displayName": "Started Time",
          "name": "started_time",
          "type": "string",
          "default": "",
          "placeholder": "3:00pm",
          "description": "The time the entry started. Defaults to the current time. Example: “8:00am”."
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "update"
          ],
          "resource": [
            "timeEntry"
          ]
        }
      }
    },
    {
      "displayName": "Project ID",
      "name": "projectId",
      "type": "string",
      "default": "",
      "description": "The ID of the project to associate with the time entry",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "createByDuration"
          ],
          "resource": [
            "timeEntry"
          ]
        }
      }
    },
    {
      "displayName": "Task ID",
      "name": "taskId",
      "type": "string",
      "default": "",
      "description": "The ID of the task to associate with the time entry",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "createByDuration"
          ],
          "resource": [
            "timeEntry"
          ]
        }
      }
    },
    {
      "displayName": "Spent Date",
      "name": "spentDate",
      "type": "dateTime",
      "default": "",
      "description": "The ISO 8601 formatted date the time entry was spent",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "createByDuration"
          ],
          "resource": [
            "timeEntry"
          ]
        }
      }
    },
    {
      "displayName": "Additional Fields",
      "name": "additionalFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Hours",
          "name": "hours",
          "type": "number",
          "typeOptions": {
            "minValue": 0
          },
          "default": 0,
          "description": "The current amount of time tracked"
        },
        {
          "displayName": "Notes",
          "name": "notes",
          "type": "string",
          "default": "",
          "description": "These are notes about the time entry"
        },
        {
          "displayName": "User ID",
          "name": "user_id",
          "type": "string",
          "default": "",
          "description": "The ID of the user to associate with the time entry. Defaults to the currently authenticated user’s ID."
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "createByDuration"
          ],
          "resource": [
            "timeEntry"
          ]
        }
      }
    },
    {
      "displayName": "Project ID",
      "name": "projectId",
      "type": "string",
      "default": "",
      "description": "The ID of the project to associate with the time entry",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "createByStartEnd"
          ],
          "resource": [
            "timeEntry"
          ]
        }
      }
    },
    {
      "displayName": "Task ID",
      "name": "taskId",
      "type": "string",
      "default": "",
      "description": "The ID of the task to associate with the time entry",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "createByStartEnd"
          ],
          "resource": [
            "timeEntry"
          ]
        }
      }
    },
    {
      "displayName": "Spent Date",
      "name": "spentDate",
      "type": "dateTime",
      "default": "",
      "description": "The ISO 8601 formatted date the time entry was spent",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "createByStartEnd"
          ],
          "resource": [
            "timeEntry"
          ]
        }
      }
    },
    {
      "displayName": "Additional Fields",
      "name": "additionalFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Ended Time",
          "name": "ended_time",
          "type": "string",
          "default": "",
          "placeholder": "3:00pm",
          "description": "The time the entry ended"
        },
        {
          "displayName": "Notes",
          "name": "notes",
          "type": "string",
          "default": "",
          "description": "These are notes about the time entry"
        },
        {
          "displayName": "Started Time",
          "name": "started_time",
          "type": "string",
          "default": "",
          "placeholder": "8:00am",
          "description": "The time the entry started. Defaults to the current time. Example: “8:00am”."
        },
        {
          "displayName": "User ID",
          "name": "user_id",
          "type": "string",
          "default": "",
          "description": "The ID of the user to associate with the time entry. Defaults to the currently authenticated user’s ID."
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "createByStartEnd"
          ],
          "resource": [
            "timeEntry"
          ]
        }
      }
    },
    {
      "displayName": "Return All",
      "name": "returnAll",
      "type": "boolean",
      "default": false,
      "description": "Whether to return all results or only up to a given limit",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 100,
      "description": "Max number of results to return",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ],
          "operation": [
            "getAll"
          ],
          "returnAll": [
            false
          ]
        }
      },
      "typeOptions": {
        "minValue": 1,
        "maxValue": 100
      }
    },
    {
      "displayName": "Filters",
      "name": "filters",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Is Active",
          "name": "is_active",
          "type": "boolean",
          "default": true,
          "description": "Whether to only return active users and false to return inactive users"
        },
        {
          "displayName": "Updated Since",
          "name": "updated_since",
          "type": "dateTime",
          "default": "",
          "description": "Only return users belonging to the user with the given ID"
        },
        {
          "displayName": "Page",
          "name": "page",
          "type": "number",
          "typeOptions": {
            "minValue": 1
          },
          "default": 1,
          "description": "The page number to use in pagination"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "User ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The ID of the user you are retrieving",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "get"
          ],
          "resource": [
            "user"
          ]
        }
      }
    },
    {
      "displayName": "User ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The ID of the user you want to delete",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "delete"
          ],
          "resource": [
            "user"
          ]
        }
      }
    },
    {
      "displayName": "First Name",
      "name": "firstName",
      "type": "string",
      "default": "",
      "description": "The first name of the user",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "user"
          ]
        }
      }
    },
    {
      "displayName": "Last Name",
      "name": "lastName",
      "type": "string",
      "default": "",
      "description": "The last name of the user",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "user"
          ]
        }
      }
    },
    {
      "displayName": "Email",
      "name": "email",
      "type": "string",
      "default": "",
      "description": "The email of the user",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "user"
          ]
        }
      }
    },
    {
      "displayName": "Additional Fields",
      "name": "additionalFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Can Create Invoices",
          "name": "can_create_invoices",
          "type": "boolean",
          "default": false,
          "description": "Whether the user can create invoices. Only applicable to Project Managers."
        },
        {
          "displayName": "Can Create Projects",
          "name": "can_create_projects",
          "type": "boolean",
          "default": false,
          "description": "Whether the user can create projects. Only applicable to Project Managers."
        },
        {
          "displayName": "Can See Rates",
          "name": "can_see_rates",
          "type": "boolean",
          "default": false,
          "description": "Whether the user can see billable rates on projects. Only applicable to Project Managers."
        },
        {
          "displayName": "Cost Rate",
          "name": "cost_rate",
          "type": "number",
          "typeOptions": {
            "minValue": 0
          },
          "default": 0,
          "description": "The cost rate to use for this user when calculating a project’s costs vs billable amount"
        },
        {
          "displayName": "Default Hourly Rate",
          "name": "default_hourly_rate",
          "type": "string",
          "default": "0",
          "description": "The billable rate to use for this user when they are added to a project"
        },
        {
          "displayName": "Has Access To All Future Projects",
          "name": "has_access_to_all_future_projects",
          "type": "boolean",
          "default": false,
          "description": "Whether the user should be automatically added to future projects"
        },
        {
          "displayName": "Is Active",
          "name": "is_active",
          "type": "boolean",
          "default": true,
          "description": "Whether the user is active or archived"
        },
        {
          "displayName": "Is Admin",
          "name": "is_admin",
          "type": "boolean",
          "default": false,
          "description": "Whether the user has Admin permissions"
        },
        {
          "displayName": "Is Contractor",
          "name": "is_contractor",
          "type": "boolean",
          "default": false,
          "description": "Whether the user is a contractor or an employee"
        },
        {
          "displayName": "Is Project Manager",
          "name": "is_project_manager",
          "type": "boolean",
          "default": false,
          "description": "Whether the user has Project Manager permissions"
        },
        {
          "displayName": "Roles",
          "name": "roles",
          "type": "string",
          "default": "",
          "description": "The role names assigned to this person"
        },
        {
          "displayName": "Timezone",
          "name": "timezone",
          "type": "string",
          "default": "",
          "description": "The user’s timezone. Defaults to the company’s timezone. See a list of <a href=\"/api-v2/introduction/overview/supported-timezones/\">supported time zones</a>."
        },
        {
          "displayName": "Weekly Capacity",
          "name": "weekly_capacity",
          "type": "number",
          "typeOptions": {
            "minValue": 0
          },
          "default": 126000,
          "description": "The number of hours per week this person is available to work in seconds. Defaults to <code class=\"language-plaintext highlighter-rouge\">126000</code> seconds (35 hours)."
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "user"
          ]
        }
      }
    },
    {
      "displayName": "Time Entry ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The ID of the time entry to update",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "update"
          ],
          "resource": [
            "user"
          ]
        }
      }
    },
    {
      "displayName": "Update Fields",
      "name": "updateFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Can Create Invoices",
          "name": "can_create_invoices",
          "type": "boolean",
          "default": false,
          "description": "Whether the user can create invoices. Only applicable to Project Managers."
        },
        {
          "displayName": "Can Create Projects",
          "name": "can_create_projects",
          "type": "boolean",
          "default": false,
          "description": "Whether the user can create projects. Only applicable to Project Managers."
        },
        {
          "displayName": "Can See Rates",
          "name": "can_see_rates",
          "type": "boolean",
          "default": false,
          "description": "Whether the user can see billable rates on projects. Only applicable to Project Managers."
        },
        {
          "displayName": "Cost Rate",
          "name": "cost_rate",
          "type": "number",
          "typeOptions": {
            "minValue": 0
          },
          "default": 0,
          "description": "The cost rate to use for this user when calculating a project’s costs vs billable amount"
        },
        {
          "displayName": "Default Hourly Rate",
          "name": "default_hourly_rate",
          "type": "string",
          "default": "0",
          "description": "The billable rate to use for this user when they are added to a project"
        },
        {
          "displayName": "Email",
          "name": "email",
          "type": "string",
          "placeholder": "name@email.com",
          "default": "",
          "description": "The user email"
        },
        {
          "displayName": "First Name",
          "name": "first_name",
          "type": "string",
          "default": "",
          "description": "The user first name"
        },
        {
          "displayName": "Has Access To All Future Projects",
          "name": "has_access_to_all_future_projects",
          "type": "boolean",
          "default": false,
          "description": "Whether the user should be automatically added to future projects"
        },
        {
          "displayName": "Is Active",
          "name": "is_active",
          "type": "boolean",
          "default": true,
          "description": "Whether the user is active or archived"
        },
        {
          "displayName": "Is Admin",
          "name": "is_admin",
          "type": "boolean",
          "default": false,
          "description": "Whether the user has Admin permissions"
        },
        {
          "displayName": "Is Contractor",
          "name": "is_contractor",
          "type": "boolean",
          "default": false,
          "description": "Whether the user is a contractor or an employee"
        },
        {
          "displayName": "Is Project Manager",
          "name": "is_project_manager",
          "type": "boolean",
          "default": false,
          "description": "Whether the user has Project Manager permissions"
        },
        {
          "displayName": "Last Name",
          "name": "last_name",
          "type": "string",
          "default": "",
          "description": "The user last name"
        },
        {
          "displayName": "Roles",
          "name": "roles",
          "type": "string",
          "default": "",
          "description": "The role names assigned to this person"
        },
        {
          "displayName": "Timezone",
          "name": "timezone",
          "type": "string",
          "default": "",
          "description": "The user’s timezone. Defaults to the company’s timezone. See a list of <a href=\"/api-v2/introduction/overview/supported-timezones/\">supported time zones</a>."
        },
        {
          "displayName": "Weekly Capacity",
          "name": "weekly_capacity",
          "type": "number",
          "typeOptions": {
            "minValue": 0
          },
          "default": 126000,
          "description": "The number of hours per week this person is available to work in seconds. Defaults to <code class=\"language-plaintext highlighter-rouge\">126000</code> seconds (35 hours)."
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "update"
          ],
          "resource": [
            "user"
          ]
        }
      }
    }
  ]

operations:
  [
    {
      "operation": "create",
      "name": "Create",
      "description": "Create a client"
    },
    {
      "operation": "delete",
      "name": "Delete",
      "description": "Delete a client"
    },
    {
      "operation": "get",
      "name": "Get",
      "description": "Get data of a client"
    },
    {
      "operation": "getAll",
      "name": "Get Many",
      "description": "Get data of many clients"
    },
    {
      "operation": "update",
      "name": "Update",
      "description": "Update a client"
    }
  ]

credentials_required:
  [
    {
      "name": "harvestApi",
      "required": true,
      "displayOptions": {
        "show": {
          "authentication": [
            "accessToken"
          ]
        }
      }
    },
    {
      "name": "harvestOAuth2Api",
      "required": true,
      "displayOptions": {
        "show": {
          "authentication": [
            "oAuth2"
          ]
        }
      }
    }
  ]


