# nodes

node_type: nodes-base.shopify
package_name: n8n-nodes-base
display_name: Shopify
description: Consume Shopify API
category: output
development_style: programmatic
version: 1
outputs:
  [
  "main"
  ]

updated_at: 2026-07-16 12:10:22
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Shopify node documentation
  description: Learn how to use the Shopify node in n8n. Follow technical documentation to integrate Shopify node into your workflows.
  contentType: [integration, reference]
  priority: medium
  ---

  # Shopify node

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

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

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

  ## Operations

  * Order
      * Create an order
      * Delete an order
      * Get an order
      * Get all orders
      * Update an order
  * Product
      * Create a product
      * Delete a product
      * Get a product
      * Get all products
      * Update a product

  ## Templates and examples

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

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

properties_schema:
  [
    {
      "displayName": "Shopify API Version: 2024-07",
      "name": "apiVersion",
      "type": "notice",
      "default": ""
    },
    {
      "displayName": "Authentication",
      "name": "authentication",
      "type": "options",
      "default": "apiKey",
      "options": [
        {
          "name": "Access Token",
          "value": "accessToken"
        },
        {
          "name": "OAuth2",
          "value": "oAuth2"
        },
        {
          "name": "API Key",
          "value": "apiKey"
        }
      ]
    },
    {
      "displayName": "Resource",
      "name": "resource",
      "type": "options",
      "default": "order",
      "options": [
        {
          "name": "Order",
          "value": "order"
        },
        {
          "name": "Product",
          "value": "product"
        }
      ],
      "noDataExpression": true
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "description": "Create an order",
          "action": "Create an order"
        },
        {
          "name": "Delete",
          "value": "delete",
          "description": "Delete an order",
          "action": "Delete an order"
        },
        {
          "name": "Get",
          "value": "get",
          "description": "Get an order",
          "action": "Get an order"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "description": "Get many orders",
          "action": "Get many orders"
        },
        {
          "name": "Update",
          "value": "update",
          "description": "Update an order",
          "action": "Update an order"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "order"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Additional Fields",
      "name": "additionalFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Billing Address",
          "name": "billingAddressUi",
          "placeholder": "Add Billing Address",
          "type": "fixedCollection",
          "default": {},
          "typeOptions": {
            "multipleValues": false
          },
          "options": [
            {
              "name": "billingAddressValues",
              "displayName": "Billing Address",
              "values": [
                {
                  "displayName": "First Name",
                  "name": "firstName",
                  "type": "string",
                  "default": ""
                },
                {
                  "displayName": "Last Name",
                  "name": "lastName",
                  "type": "string",
                  "default": ""
                },
                {
                  "displayName": "Company",
                  "name": "company",
                  "type": "string",
                  "default": ""
                },
                {
                  "displayName": "Country",
                  "name": "country",
                  "type": "string",
                  "default": ""
                },
                {
                  "displayName": "Address Line 1",
                  "name": "address1",
                  "type": "string",
                  "default": ""
                },
                {
                  "displayName": "Address Line 2",
                  "name": "address2",
                  "type": "string",
                  "default": ""
                },
                {
                  "displayName": "City",
                  "name": "city",
                  "type": "string",
                  "default": ""
                },
                {
                  "displayName": "Province",
                  "name": "province",
                  "type": "string",
                  "default": ""
                },
                {
                  "displayName": "Zip Code",
                  "name": "zip",
                  "type": "string",
                  "default": ""
                },
                {
                  "displayName": "Phone",
                  "name": "phone",
                  "type": "string",
                  "default": ""
                }
              ]
            }
          ]
        },
        {
          "displayName": "Discount Codes",
          "name": "discountCodesUi",
          "placeholder": "Add Discount Code",
          "type": "fixedCollection",
          "default": {},
          "typeOptions": {
            "multipleValues": true
          },
          "options": [
            {
              "name": "discountCodesValues",
              "displayName": "Discount Code",
              "values": [
                {
                  "displayName": "Amount",
                  "name": "amount",
                  "type": "string",
                  "default": "",
                  "description": "The amount that's deducted from the order total"
                },
                {
                  "displayName": "Code",
                  "name": "code",
                  "type": "string",
                  "default": "",
                  "description": "When the associated discount application is of type code"
                },
                {
                  "displayName": "Type",
                  "name": "type",
                  "type": "options",
                  "options": [
                    {
                      "name": "Fixed Amount",
                      "value": "fixedAmount",
                      "description": "Applies amount as a unit of the store's currency"
                    },
                    {
                      "name": "Percentage",
                      "value": "percentage",
                      "description": "Applies a discount of amount as a percentage of the order total"
                    },
                    {
                      "name": "Shipping",
                      "value": "shipping",
                      "description": "Applies a free shipping discount on orders that have a shipping rate less than or equal to amount"
                    }
                  ],
                  "default": "fixedAmount",
                  "description": "When the associated discount application is of type code"
                }
              ]
            }
          ]
        },
        {
          "displayName": "Email",
          "name": "email",
          "type": "string",
          "placeholder": "name@email.com",
          "default": "",
          "description": "The customer's email address"
        },
        {
          "displayName": "Fulfillment Status",
          "name": "fulfillmentStatus",
          "type": "options",
          "options": [
            {
              "name": "Fulfilled",
              "value": "fulfilled",
              "description": "Every line item in the order has been fulfilled"
            },
            {
              "name": "Null",
              "value": "null",
              "description": "None of the line items in the order have been fulfilled"
            },
            {
              "name": "Partial",
              "value": "partial",
              "description": "At least one line item in the order has been fulfilled"
            },
            {
              "name": "Restocked",
              "value": "restocked",
              "description": "Every line item in the order has been restocked and the order canceled"
            }
          ],
          "default": "",
          "description": "The order's status in terms of fulfilled line items"
        },
        {
          "displayName": "Inventory Behaviour",
          "name": "inventoryBehaviour",
          "type": "options",
          "options": [
            {
              "name": "Bypass",
              "value": "bypass",
              "description": "Do not claim inventory"
            },
            {
              "name": "Decrement Ignoring Policy",
              "value": "decrementIgnoringPolicy",
              "description": "Ignore the product's inventory policy and claim inventory"
            },
            {
              "name": "Decrement Obeying Policy",
              "value": "decrementObeyingPolicy",
              "description": "Follow the product's inventory policy and claim inventory, if possible"
            }
          ],
          "default": "bypass",
          "description": "The behaviour to use when updating inventory"
        },
        {
          "displayName": "Location Name or ID",
          "name": "locationId",
          "type": "options",
          "typeOptions": {
            "loadOptionsMethod": "getLocations"
          },
          "default": "",
          "description": "The ID of the physical location where the order was processed. Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>."
        },
        {
          "displayName": "Note",
          "name": "note",
          "type": "string",
          "default": "",
          "description": "An optional note that a shop owner can attach to the order"
        },
        {
          "displayName": "Send Fulfillment Receipt",
          "name": "sendFulfillmentReceipt",
          "type": "boolean",
          "default": false,
          "description": "Whether to send a shipping confirmation to the customer"
        },
        {
          "displayName": "Send Receipt",
          "name": "sendReceipt",
          "type": "boolean",
          "default": false,
          "description": "Whether to send an order confirmation to the customer"
        },
        {
          "displayName": "Shipping Address",
          "name": "shippingAddressUi",
          "placeholder": "Add Shipping",
          "type": "fixedCollection",
          "default": {},
          "typeOptions": {
            "multipleValues": false
          },
          "options": [
            {
              "name": "shippingAddressValues",
              "displayName": "Shipping Address",
              "values": [
                {
                  "displayName": "First Name",
                  "name": "firstName",
                  "type": "string",
                  "default": ""
                },
                {
                  "displayName": "Last Name",
                  "name": "lastName",
                  "type": "string",
                  "default": ""
                },
                {
                  "displayName": "Company",
                  "name": "company",
                  "type": "string",
                  "default": ""
                },
                {
                  "displayName": "Country",
                  "name": "country",
                  "type": "string",
                  "default": ""
                },
                {
                  "displayName": "Address Line 1",
                  "name": "address1",
                  "type": "string",
                  "default": ""
                },
                {
                  "displayName": "Address Line 2",
                  "name": "address2",
                  "type": "string",
                  "default": ""
                },
                {
                  "displayName": "City",
                  "name": "city",
                  "type": "string",
                  "default": ""
                },
                {
                  "displayName": "Province",
                  "name": "province",
                  "type": "string",
                  "default": ""
                },
                {
                  "displayName": "Zip Code",
                  "name": "zip",
                  "type": "string",
                  "default": ""
                },
                {
                  "displayName": "Phone",
                  "name": "phone",
                  "type": "string",
                  "default": ""
                }
              ]
            }
          ]
        },
        {
          "displayName": "Source Name",
          "name": "sourceName",
          "type": "string",
          "default": "",
          "description": "Where the order originated. Can be set only during order creation, and is not writeable afterwards."
        },
        {
          "displayName": "Tags",
          "name": "tags",
          "type": "string",
          "default": "",
          "description": "Tags attached to the order, formatted as a string of comma-separated values"
        },
        {
          "displayName": "Test",
          "name": "test",
          "type": "boolean",
          "default": false,
          "description": "Whether this is a test order"
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "order"
          ]
        }
      }
    },
    {
      "displayName": "Line Items",
      "name": "limeItemsUi",
      "type": "fixedCollection",
      "default": {},
      "options": [
        {
          "displayName": "Line Item",
          "name": "lineItemValues",
          "values": [
            {
              "displayName": "Product Name or ID",
              "name": "productId",
              "type": "options",
              "typeOptions": {
                "loadOptionsMethod": "getProducts"
              },
              "default": "",
              "description": "The ID of the product that the line item belongs to. Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>."
            },
            {
              "displayName": "Variant ID",
              "name": "variantId",
              "type": "string",
              "default": "",
              "description": "The ID of the product variant"
            },
            {
              "displayName": "Title",
              "name": "title",
              "type": "string",
              "default": "",
              "description": "The title of the product"
            },
            {
              "displayName": "Grams",
              "name": "grams",
              "type": "string",
              "default": "",
              "description": "The weight of the item in grams"
            },
            {
              "displayName": "Quantity",
              "name": "quantity",
              "type": "number",
              "typeOptions": {
                "minValue": 1
              },
              "default": 1,
              "description": "The number of items that were purchased"
            },
            {
              "displayName": "Price",
              "name": "price",
              "type": "string",
              "default": ""
            }
          ]
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "order"
          ],
          "operation": [
            "create"
          ]
        }
      },
      "typeOptions": {
        "multipleValues": true
      }
    },
    {
      "displayName": "Order ID",
      "name": "orderId",
      "type": "string",
      "default": "",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "order"
          ],
          "operation": [
            "delete"
          ]
        }
      }
    },
    {
      "displayName": "Order ID",
      "name": "orderId",
      "type": "string",
      "default": "",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "order"
          ],
          "operation": [
            "get"
          ]
        }
      }
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Fields",
          "name": "fields",
          "type": "string",
          "default": "",
          "description": "Fields the order will return, formatted as a string of comma-separated values. By default all the fields are returned."
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "get"
          ],
          "resource": [
            "order"
          ]
        }
      }
    },
    {
      "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": [
            "order"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 50,
      "description": "Max number of results to return",
      "displayOptions": {
        "show": {
          "resource": [
            "order"
          ],
          "operation": [
            "getAll"
          ],
          "returnAll": [
            false
          ]
        }
      },
      "typeOptions": {
        "minValue": 1,
        "maxValue": 250
      }
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Attribution App ID",
          "name": "attributionAppId",
          "type": "string",
          "default": "",
          "description": "Show orders attributed to a certain app, specified by the app ID. Set as current to show orders for the app currently consuming the API."
        },
        {
          "displayName": "Created At Min",
          "name": "createdAtMin",
          "type": "dateTime",
          "default": "",
          "description": "Show orders created at or after date"
        },
        {
          "displayName": "Created At Max",
          "name": "createdAtMax",
          "type": "dateTime",
          "default": "",
          "description": "Show orders created at or before date"
        },
        {
          "displayName": "Financial Status",
          "name": "financialStatus",
          "type": "options",
          "options": [
            {
              "name": "Any",
              "value": "any",
              "description": "Show orders of any financial status"
            },
            {
              "name": "Authorized",
              "value": "authorized",
              "description": "Show only authorized orders"
            },
            {
              "name": "Paid",
              "value": "paid",
              "description": "Show only paid orders"
            },
            {
              "name": "Partially Paid",
              "value": "partiallyPaid",
              "description": "Show only partially paid orders"
            },
            {
              "name": "Partially Refunded",
              "value": "partiallyRefunded",
              "description": "Show only partially refunded orders"
            },
            {
              "name": "Pending",
              "value": "pending",
              "description": "Show only pending orders"
            },
            {
              "name": "Refunded",
              "value": "refunded",
              "description": "Show only refunded orders"
            },
            {
              "name": "Unpaid",
              "value": "unpaid",
              "description": "Show authorized and partially paid orders"
            },
            {
              "name": "Voided",
              "value": "voided",
              "description": "Show only voided orders"
            }
          ],
          "default": "any",
          "description": "Filter orders by their financial status"
        },
        {
          "displayName": "Fulfillment Status",
          "name": "fulfillmentStatus",
          "type": "options",
          "options": [
            {
              "name": "Any",
              "value": "any",
              "description": "Show orders of any fulfillment status"
            },
            {
              "name": "Partial",
              "value": "partial",
              "description": "Show partially shipped orders"
            },
            {
              "name": "Shipped",
              "value": "shipped",
              "description": "Show orders that have been shipped. Returns orders with fulfillment_status of fulfilled."
            },
            {
              "name": "Unfulfilled",
              "value": "unfulfilled",
              "description": "Returns orders with fulfillment_status of null or partial"
            },
            {
              "name": "Unshipped",
              "value": "unshipped",
              "description": "Show orders that have not yet been shipped. Returns orders with fulfillment_status of null."
            }
          ],
          "default": "any",
          "description": "Filter orders by their fulfillment status"
        },
        {
          "displayName": "Fields",
          "name": "fields",
          "type": "string",
          "default": "",
          "description": "Fields the orders will return, formatted as a string of comma-separated values. By default all the fields are returned."
        },
        {
          "displayName": "IDs",
          "name": "ids",
          "type": "string",
          "default": "",
          "description": "Retrieve only orders specified by a comma-separated list of order IDs"
        },
        {
          "displayName": "Processed At Max",
          "name": "processedAtMax",
          "type": "dateTime",
          "default": "",
          "description": "Show orders imported at or before date"
        },
        {
          "displayName": "Processed At Min",
          "name": "processedAtMin",
          "type": "dateTime",
          "default": "",
          "description": "Show orders imported at or after date"
        },
        {
          "displayName": "Status",
          "name": "status",
          "type": "options",
          "options": [
            {
              "name": "Any",
              "value": "any",
              "description": "Show orders of any status, including archived orders"
            },
            {
              "name": "Cancelled",
              "value": "Cancelled",
              "description": "Show only canceled orders"
            },
            {
              "name": "Closed",
              "value": "closed",
              "description": "Show only closed orders"
            },
            {
              "name": "Open",
              "value": "open",
              "description": "Show only open orders"
            }
          ],
          "default": "open",
          "description": "Filter orders by their status"
        },
        {
          "displayName": "Since ID",
          "name": "sinceId",
          "type": "string",
          "default": "",
          "description": "Show orders after the specified ID"
        },
        {
          "displayName": "Updated At Max",
          "name": "updatedAtMax",
          "type": "dateTime",
          "default": "",
          "description": "Show orders last updated at or after date"
        },
        {
          "displayName": "Updated At Min",
          "name": "updatedAtMin",
          "type": "dateTime",
          "default": "",
          "description": "Show orders last updated at or before date"
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "getAll"
          ],
          "resource": [
            "order"
          ]
        }
      }
    },
    {
      "displayName": "Order ID",
      "name": "orderId",
      "type": "string",
      "default": "",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "order"
          ],
          "operation": [
            "update"
          ]
        }
      }
    },
    {
      "displayName": "Update Fields",
      "name": "updateFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Email",
          "name": "email",
          "type": "string",
          "placeholder": "name@email.com",
          "default": "",
          "description": "The customer's email address"
        },
        {
          "displayName": "Location Name or ID",
          "name": "locationId",
          "type": "options",
          "typeOptions": {
            "loadOptionsMethod": "getLocations"
          },
          "default": "",
          "description": "The ID of the physical location where the order was processed. Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>."
        },
        {
          "displayName": "Note",
          "name": "note",
          "type": "string",
          "default": "",
          "description": "An optional note that a shop owner can attach to the order"
        },
        {
          "displayName": "Shipping Address",
          "name": "shippingAddressUi",
          "placeholder": "Add Shipping",
          "type": "fixedCollection",
          "default": {},
          "typeOptions": {
            "multipleValues": false
          },
          "options": [
            {
              "name": "shippingAddressValues",
              "displayName": "Shipping Address",
              "values": [
                {
                  "displayName": "First Name",
                  "name": "firstName",
                  "type": "string",
                  "default": ""
                },
                {
                  "displayName": "Last Name",
                  "name": "lastName",
                  "type": "string",
                  "default": ""
                },
                {
                  "displayName": "Company",
                  "name": "company",
                  "type": "string",
                  "default": ""
                },
                {
                  "displayName": "Country",
                  "name": "country",
                  "type": "string",
                  "default": ""
                },
                {
                  "displayName": "Address Line 1",
                  "name": "address1",
                  "type": "string",
                  "default": ""
                },
                {
                  "displayName": "Address Line 2",
                  "name": "address2",
                  "type": "string",
                  "default": ""
                },
                {
                  "displayName": "City",
                  "name": "city",
                  "type": "string",
                  "default": ""
                },
                {
                  "displayName": "Province",
                  "name": "province",
                  "type": "string",
                  "default": ""
                },
                {
                  "displayName": "Zip Code",
                  "name": "zip",
                  "type": "string",
                  "default": ""
                },
                {
                  "displayName": "Phone",
                  "name": "phone",
                  "type": "string",
                  "default": ""
                }
              ]
            }
          ]
        },
        {
          "displayName": "Source Name",
          "name": "sourceName",
          "type": "string",
          "default": "",
          "description": "Where the order originated. Can be set only during order creation, and is not writeable afterwards."
        },
        {
          "displayName": "Tags",
          "name": "tags",
          "type": "string",
          "default": "",
          "description": "Tags attached to the order, formatted as a string of comma-separated values"
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "update"
          ],
          "resource": [
            "order"
          ]
        }
      }
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "description": "Create a product",
          "action": "Create a product"
        },
        {
          "name": "Delete",
          "value": "delete",
          "description": "Delete a product",
          "action": "Delete a product"
        },
        {
          "name": "Get",
          "value": "get",
          "description": "Get a product",
          "action": "Get a product"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "description": "Get many products",
          "action": "Get many products"
        },
        {
          "name": "Update",
          "value": "update",
          "description": "Update a product",
          "action": "Update a product"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "product"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Title",
      "name": "title",
      "type": "string",
      "default": "",
      "description": "The name of the product",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "product"
          ]
        }
      }
    },
    {
      "displayName": "Product ID",
      "name": "productId",
      "type": "string",
      "default": "",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "product"
          ],
          "operation": [
            "update"
          ]
        }
      }
    },
    {
      "displayName": "Additional Fields",
      "name": "additionalFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Body HTML",
          "name": "body_html",
          "type": "string",
          "default": "",
          "description": "A description of the product. Supports HTML formatting."
        },
        {
          "displayName": "Handle",
          "name": "handle",
          "type": "string",
          "default": "",
          "description": "A unique human-friendly string for the product. Automatically generated from the product's title. Used by the Liquid templating language to refer to objects."
        },
        {
          "displayName": "Images",
          "name": "images",
          "type": "collection",
          "placeholder": "Add Image Field",
          "typeOptions": {
            "multipleValues": true
          },
          "default": {},
          "description": "A list of product image objects, each one representing an image associated with the product",
          "options": [
            {
              "displayName": "Created At",
              "name": "created_at",
              "type": "dateTime",
              "default": "",
              "description": "The date and time when the product image was created"
            },
            {
              "displayName": "ID",
              "name": "id",
              "type": "number",
              "default": "",
              "description": "A unique numeric identifier for the product image"
            },
            {
              "displayName": "Position",
              "name": "position",
              "type": "number",
              "default": "",
              "description": "The order of the product image in the list. The first product image is at position 1 and is the \"main\" image for the product."
            },
            {
              "displayName": "Product ID",
              "name": "product_id",
              "type": "number",
              "default": "",
              "description": "The ID of the product associated with the image"
            },
            {
              "displayName": "Variant IDs",
              "name": "variant_ids",
              "type": "number",
              "typeOptions": {
                "multipleValues": true
              },
              "default": "",
              "description": "An array of variant IDs associated with the image"
            },
            {
              "displayName": "Source",
              "name": "src",
              "type": "string",
              "default": "",
              "description": "<p>Specifies the location of the product image. This parameter supports URL filters that you can use to retrieve modified copies of the image.</p><p>For example, add _small, to the filename to retrieve a scaled copy of the image at 100 x 100 px (for example, ipod-nano_small.png), or add _2048x2048 to retrieve a copy of the image constrained at 2048 x 2048 px resolution (for example, ipod-nano_2048x2048.png).</p>."
            },
            {
              "displayName": "Width",
              "name": "width",
              "type": "number",
              "default": "",
              "description": "Width dimension of the image which is determined on upload"
            },
            {
              "displayName": "Height",
              "name": "height",
              "type": "number",
              "default": "",
              "description": "Height dimension of the image which is determined on upload"
            },
            {
              "displayName": "Updated At",
              "name": "updated_at",
              "type": "dateTime",
              "default": "",
              "description": "The date and time when the product image was last modified"
            }
          ]
        },
        {
          "displayName": "Options",
          "name": "productOptions",
          "type": "fixedCollection",
          "placeholder": "Add option",
          "typeOptions": {
            "multipleValues": true
          },
          "default": {},
          "description": "The custom product property names like Size, Color, and Material. You can add up to 3 options of up to 255 characters each.",
          "options": [
            {
              "displayName": "Option",
              "name": "option",
              "values": [
                {
                  "displayName": "Name",
                  "name": "name",
                  "type": "string",
                  "default": "",
                  "description": "Option's name"
                },
                {
                  "displayName": "Value",
                  "name": "value",
                  "type": "string",
                  "default": "",
                  "description": "Option's values"
                }
              ]
            }
          ]
        },
        {
          "displayName": "Product Type",
          "name": "product_type",
          "type": "string",
          "default": "",
          "description": "A categorization for the product used for filtering and searching products"
        },
        {
          "displayName": "Published At",
          "name": "published_at",
          "type": "dateTime",
          "default": "",
          "description": "The date and time (ISO 8601 format) when the product was published. Can be set to null to unpublish the product from the Online Store channel."
        },
        {
          "displayName": "Published Scope",
          "name": "published_scope",
          "type": "options",
          "default": "",
          "options": [
            {
              "name": "Global",
              "value": "global",
              "description": "The product is published to both the Online Store channel and the Point of Sale channel"
            },
            {
              "name": "Web",
              "value": "web",
              "description": "The product is published to the Online Store channel but not published to the Point of Sale channel"
            }
          ]
        },
        {
          "displayName": "Tags",
          "name": "tags",
          "type": "string",
          "default": "",
          "description": "A string of comma-separated tags that are used for filtering and search. A product can have up to 250 tags. Each tag can have up to 255 characters."
        },
        {
          "displayName": "Template Suffix",
          "name": "template_suffix",
          "type": "string",
          "default": "",
          "description": "The suffix of the Liquid template used for the product page. If this property is specified, then the product page uses a template called \"product.suffix.liquid\", where \"suffix\" is the value of this property. If this property is \"\" or null, then the product page uses the default template \"product.liquid\". (default: null)"
        },
        {
          "displayName": "Vendor",
          "name": "vendor",
          "type": "string",
          "default": "",
          "description": "The name of the product's vendor"
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "product"
          ]
        }
      }
    },
    {
      "displayName": "Update Fields",
      "name": "updateFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Body HTML",
          "name": "body_html",
          "type": "string",
          "default": "",
          "description": "A description of the product. Supports HTML formatting."
        },
        {
          "displayName": "Handle",
          "name": "handle",
          "type": "string",
          "default": "",
          "description": "A unique human-friendly string for the product. Automatically generated from the product's title. Used by the Liquid templating language to refer to objects."
        },
        {
          "displayName": "Images",
          "name": "images",
          "type": "collection",
          "placeholder": "Add Image Field",
          "typeOptions": {
            "multipleValues": true
          },
          "default": {},
          "description": "A list of product image objects, each one representing an image associated with the product",
          "options": [
            {
              "displayName": "Created At",
              "name": "created_at",
              "type": "dateTime",
              "default": "",
              "description": "The date and time when the product image was created"
            },
            {
              "displayName": "ID",
              "name": "id",
              "type": "number",
              "default": "",
              "description": "A unique numeric identifier for the product image"
            },
            {
              "displayName": "Position",
              "name": "position",
              "type": "number",
              "default": "",
              "description": "The order of the product image in the list. The first product image is at position 1 and is the \"main\" image for the product."
            },
            {
              "displayName": "Product ID",
              "name": "product_id",
              "type": "number",
              "default": "",
              "description": "The ID of the product associated with the image"
            },
            {
              "displayName": "Variant IDs",
              "name": "variant_ids",
              "type": "number",
              "typeOptions": {
                "multipleValues": true
              },
              "default": "",
              "description": "An array of variant IDs associated with the image"
            },
            {
              "displayName": "Source",
              "name": "src",
              "type": "string",
              "default": "",
              "description": "<p>Specifies the location of the product image. This parameter supports URL filters that you can use to retrieve modified copies of the image.</p><p>For example, add _small, to the filename to retrieve a scaled copy of the image at 100 x 100 px (for example, ipod-nano_small.png), or add _2048x2048 to retrieve a copy of the image constrained at 2048 x 2048 px resolution (for example, ipod-nano_2048x2048.png).</p>."
            },
            {
              "displayName": "Width",
              "name": "width",
              "type": "number",
              "default": "",
              "description": "Width dimension of the image which is determined on upload"
            },
            {
              "displayName": "Height",
              "name": "height",
              "type": "number",
              "default": "",
              "description": "Height dimension of the image which is determined on upload"
            },
            {
              "displayName": "Updated At",
              "name": "updated_at",
              "type": "dateTime",
              "default": "",
              "description": "The date and time when the product image was last modified"
            }
          ]
        },
        {
          "displayName": "Options",
          "name": "productOptions",
          "type": "fixedCollection",
          "placeholder": "Add option",
          "typeOptions": {
            "multipleValues": true
          },
          "default": {},
          "description": "The custom product property names like Size, Color, and Material. You can add up to 3 options of up to 255 characters each.",
          "options": [
            {
              "displayName": "Option",
              "name": "option",
              "values": [
                {
                  "displayName": "Name",
                  "name": "name",
                  "type": "string",
                  "default": "",
                  "description": "Option's name"
                },
                {
                  "displayName": "Value",
                  "name": "value",
                  "type": "string",
                  "default": "",
                  "description": "Option's values"
                }
              ]
            }
          ]
        },
        {
          "displayName": "Product Type",
          "name": "product_type",
          "type": "string",
          "default": "",
          "description": "A categorization for the product used for filtering and searching products"
        },
        {
          "displayName": "Published At",
          "name": "published_at",
          "type": "dateTime",
          "default": "",
          "description": "The date and time (ISO 8601 format) when the product was published. Can be set to null to unpublish the product from the Online Store channel."
        },
        {
          "displayName": "Published Scope",
          "name": "published_scope",
          "type": "options",
          "default": "",
          "options": [
            {
              "name": "Global",
              "value": "global",
              "description": "The product is published to both the Online Store channel and the Point of Sale channel"
            },
            {
              "name": "Web",
              "value": "web",
              "description": "The product is published to the Online Store channel but not published to the Point of Sale channel"
            }
          ]
        },
        {
          "displayName": "Tags",
          "name": "tags",
          "type": "string",
          "default": "",
          "description": "A string of comma-separated tags that are used for filtering and search. A product can have up to 250 tags. Each tag can have up to 255 characters."
        },
        {
          "displayName": "Template Suffix",
          "name": "template_suffix",
          "type": "string",
          "default": "",
          "description": "The suffix of the Liquid template used for the product page. If this property is specified, then the product page uses a template called \"product.suffix.liquid\", where \"suffix\" is the value of this property. If this property is \"\" or null, then the product page uses the default template \"product.liquid\". (default: null)"
        },
        {
          "displayName": "Title",
          "name": "title",
          "type": "string",
          "default": "",
          "description": "The name of the product"
        },
        {
          "displayName": "Vendor",
          "name": "vendor",
          "type": "string",
          "default": "",
          "description": "The name of the product's vendor"
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "update"
          ],
          "resource": [
            "product"
          ]
        }
      }
    },
    {
      "displayName": "Product ID",
      "name": "productId",
      "type": "string",
      "default": "",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "product"
          ],
          "operation": [
            "delete"
          ]
        }
      }
    },
    {
      "displayName": "Product ID",
      "name": "productId",
      "type": "string",
      "default": "",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "product"
          ],
          "operation": [
            "get"
          ]
        }
      }
    },
    {
      "displayName": "Additional Fields",
      "name": "additionalFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Fields",
          "name": "fields",
          "type": "string",
          "default": "",
          "description": "Fields the product will return, formatted as a string of comma-separated values. By default all the fields are returned."
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "get"
          ],
          "resource": [
            "product"
          ]
        }
      }
    },
    {
      "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": [
            "product"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 50,
      "description": "Max number of results to return",
      "displayOptions": {
        "show": {
          "resource": [
            "product"
          ],
          "operation": [
            "getAll"
          ],
          "returnAll": [
            false
          ]
        }
      },
      "typeOptions": {
        "minValue": 1,
        "maxValue": 250
      }
    },
    {
      "displayName": "Additional Fields",
      "name": "additionalFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Collection ID",
          "name": "collection_id",
          "type": "string",
          "default": "",
          "description": "Filter results by product collection ID"
        },
        {
          "displayName": "Created At Max",
          "name": "created_at_max",
          "type": "dateTime",
          "default": "",
          "description": "Show products created before date"
        },
        {
          "displayName": "Created At Min",
          "name": "created_at_min",
          "type": "dateTime",
          "default": "",
          "description": "Show products created after date"
        },
        {
          "displayName": "Fields",
          "name": "fields",
          "type": "string",
          "default": "",
          "description": "Show only certain fields, specified by a comma-separated list of field names"
        },
        {
          "displayName": "Handle",
          "name": "handle",
          "type": "string",
          "default": "",
          "description": "Filter results by product handle"
        },
        {
          "displayName": "IDs",
          "name": "ids",
          "type": "string",
          "default": "",
          "description": "Return only products specified by a comma-separated list of product IDs"
        },
        {
          "displayName": "Presentment Currencies",
          "name": "presentment_currencies",
          "type": "string",
          "default": "",
          "description": "Return presentment prices in only certain currencies, specified by a comma-separated list of ISO 4217 currency codes"
        },
        {
          "displayName": "Product Type",
          "name": "product_type",
          "type": "string",
          "default": "",
          "description": "Filter results by product type"
        },
        {
          "displayName": "Published At Max",
          "name": "published_at_max",
          "type": "dateTime",
          "default": "",
          "description": "Show products published before date"
        },
        {
          "displayName": "Published At Min",
          "name": "published_at_min",
          "type": "dateTime",
          "default": "",
          "description": "Show products published after date"
        },
        {
          "displayName": "Published Status",
          "name": "published_status",
          "type": "options",
          "options": [
            {
              "name": "Any",
              "value": "any",
              "description": "Show all products"
            },
            {
              "name": "Published",
              "value": "published",
              "description": "Show only published products"
            },
            {
              "name": "Unpublished",
              "value": "unpublished",
              "description": "Show only unpublished products"
            }
          ],
          "default": "any",
          "description": "Return products by their published status"
        },
        {
          "displayName": "Title",
          "name": "title",
          "type": "string",
          "default": "",
          "description": "Filter results by product title"
        },
        {
          "displayName": "Updated At Max",
          "name": "updated_at_max",
          "type": "dateTime",
          "default": "",
          "description": "Show products last updated before date"
        },
        {
          "displayName": "Updated At Min",
          "name": "updated_at_min",
          "type": "dateTime",
          "default": "",
          "description": "Show products last updated after date"
        },
        {
          "displayName": "Vendor",
          "name": "vendor",
          "type": "string",
          "default": "",
          "description": "Filter results by product vendor"
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "getAll"
          ],
          "resource": [
            "product"
          ]
        }
      }
    }
  ]

operations:
  [
    {
      "operation": "create",
      "name": "Create",
      "description": "Create an order",
      "resource": "order"
    },
    {
      "operation": "delete",
      "name": "Delete",
      "description": "Delete an order",
      "resource": "order"
    },
    {
      "operation": "get",
      "name": "Get",
      "description": "Get an order",
      "resource": "order"
    },
    {
      "operation": "getAll",
      "name": "Get Many",
      "description": "Get many orders",
      "resource": "order"
    },
    {
      "operation": "update",
      "name": "Update",
      "description": "Update an order",
      "resource": "order"
    },
    {
      "operation": "create",
      "name": "Create",
      "description": "Create a product",
      "resource": "product"
    },
    {
      "operation": "delete",
      "name": "Delete",
      "description": "Delete a product",
      "resource": "product"
    },
    {
      "operation": "get",
      "name": "Get",
      "description": "Get a product",
      "resource": "product"
    },
    {
      "operation": "getAll",
      "name": "Get Many",
      "description": "Get many products",
      "resource": "product"
    },
    {
      "operation": "update",
      "name": "Update",
      "description": "Update a product",
      "resource": "product"
    }
  ]

credentials_required:
  [
    {
      "name": "shopifyApi",
      "required": true,
      "displayOptions": {
        "show": {
          "authentication": [
            "apiKey"
          ]
        }
      }
    },
    {
      "name": "shopifyAccessTokenApi",
      "required": true,
      "displayOptions": {
        "show": {
          "authentication": [
            "accessToken"
          ]
        }
      }
    },
    {
      "name": "shopifyOAuth2Api",
      "required": true,
      "displayOptions": {
        "show": {
          "authentication": [
            "oAuth2"
          ]
        }
      }
    }
  ]


node_type: nodes-base.shopifyTrigger
package_name: n8n-nodes-base
display_name: Shopify Trigger
description: Handle Shopify events via webhooks
category: trigger
development_style: programmatic
version: 1
operations: []
outputs:
  [
  "main"
  ]

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

  # Shopify Trigger node

  [Shopify](https://www.shopify.com/){:target=_blank .external-link} is an e-commerce platform that allows users to set up an online store and sell their products.

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

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

properties_schema:
  [
    {
      "displayName": "Authentication",
      "name": "authentication",
      "type": "options",
      "default": "apiKey",
      "options": [
        {
          "name": "Access Token",
          "value": "accessToken"
        },
        {
          "name": "OAuth2",
          "value": "oAuth2"
        },
        {
          "name": "API Key",
          "value": "apiKey"
        }
      ]
    },
    {
      "displayName": "Trigger On",
      "name": "topic",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "App Uninstalled",
          "value": "app/uninstalled"
        },
        {
          "name": "Cart Created",
          "value": "carts/create"
        },
        {
          "name": "Cart Updated",
          "value": "carts/update"
        },
        {
          "name": "Checkout Created",
          "value": "checkouts/create"
        },
        {
          "name": "Checkout Delete",
          "value": "checkouts/delete"
        },
        {
          "name": "Checkout Update",
          "value": "checkouts/update"
        },
        {
          "name": "Collection Created",
          "value": "collections/create"
        },
        {
          "name": "Collection Deleted",
          "value": "collections/delete"
        },
        {
          "name": "Collection Listings Added",
          "value": "collection_listings/add"
        },
        {
          "name": "Collection Listings Removed",
          "value": "collection_listings/remove"
        },
        {
          "name": "Collection Listings Updated",
          "value": "collection_listings/update"
        },
        {
          "name": "Collection Updated",
          "value": "collections/update"
        },
        {
          "name": "Customer Created",
          "value": "customers/create"
        },
        {
          "name": "Customer Deleted",
          "value": "customers/delete"
        },
        {
          "name": "Customer Disabled",
          "value": "customers/disable"
        },
        {
          "name": "Customer Enabled",
          "value": "customers/enable"
        },
        {
          "name": "Customer Groups Created",
          "value": "customer_groups/create"
        },
        {
          "name": "Customer Groups Deleted",
          "value": "customer_groups/delete"
        },
        {
          "name": "Customer Groups Updated",
          "value": "customer_groups/update"
        },
        {
          "name": "Customer Updated",
          "value": "customers/update"
        },
        {
          "name": "Draft Orders Created",
          "value": "draft_orders/create"
        },
        {
          "name": "Draft Orders Deleted",
          "value": "draft_orders/delete"
        },
        {
          "name": "Draft Orders Updated",
          "value": "draft_orders/update"
        },
        {
          "name": "Fulfillment Created",
          "value": "fulfillments/create"
        },
        {
          "name": "Fulfillment Events Created",
          "value": "fulfillment_events/create"
        },
        {
          "name": "Fulfillment Events Deleted",
          "value": "fulfillment_events/delete"
        },
        {
          "name": "Fulfillment Updated",
          "value": "fulfillments/update"
        },
        {
          "name": "Inventory Items Created",
          "value": "inventory_items/create"
        },
        {
          "name": "Inventory Items Deleted",
          "value": "inventory_items/delete"
        },
        {
          "name": "Inventory Items Updated",
          "value": "inventory_items/update"
        },
        {
          "name": "Inventory Levels Connected",
          "value": "inventory_levels/connect"
        },
        {
          "name": "Inventory Levels Disconnected",
          "value": "inventory_levels/disconnect"
        },
        {
          "name": "Inventory Levels Updated",
          "value": "inventory_levels/update"
        },
        {
          "name": "Locale Created",
          "value": "locales/create"
        },
        {
          "name": "Locale Updated",
          "value": "locales/update"
        },
        {
          "name": "Location Created",
          "value": "locations/create"
        },
        {
          "name": "Location Deleted",
          "value": "locations/delete"
        },
        {
          "name": "Location Updated",
          "value": "locations/update"
        },
        {
          "name": "Order Cancelled",
          "value": "orders/cancelled"
        },
        {
          "name": "Order Created",
          "value": "orders/create"
        },
        {
          "name": "Order Fulfilled",
          "value": "orders/fulfilled"
        },
        {
          "name": "Order Paid",
          "value": "orders/paid"
        },
        {
          "name": "Order Partially Fulfilled",
          "value": "orders/partially_fulfilled"
        },
        {
          "name": "Order Transactions Created",
          "value": "order_transactions/create"
        },
        {
          "name": "Order Updated",
          "value": "orders/updated"
        },
        {
          "name": "Orders Deleted",
          "value": "orders/delete"
        },
        {
          "name": "Product Created",
          "value": "products/create"
        },
        {
          "name": "Product Deleted",
          "value": "products/delete"
        },
        {
          "name": "Product Listings Added",
          "value": "product_listings/add"
        },
        {
          "name": "Product Listings Removed",
          "value": "product_listings/remove"
        },
        {
          "name": "Product Listings Updated",
          "value": "product_listings/update"
        },
        {
          "name": "Product Updated",
          "value": "products/update"
        },
        {
          "name": "Refund Created",
          "value": "refunds/create"
        },
        {
          "name": "Shop Updated",
          "value": "shop/update"
        },
        {
          "name": "Tender Transactions Created",
          "value": "tender_transactions/create"
        },
        {
          "name": "Theme Created",
          "value": "themes/create"
        },
        {
          "name": "Theme Deleted",
          "value": "themes/delete"
        },
        {
          "name": "Theme Published",
          "value": "themes/publish"
        },
        {
          "name": "Theme Updated",
          "value": "themes/update"
        }
      ]
    }
  ]

credentials_required:
  [
    {
      "name": "shopifyApi",
      "required": true,
      "displayOptions": {
        "show": {
          "authentication": [
            "apiKey"
          ]
        }
      }
    },
    {
      "name": "shopifyAccessTokenApi",
      "required": true,
      "displayOptions": {
        "show": {
          "authentication": [
            "accessToken"
          ]
        }
      }
    },
    {
      "name": "shopifyOAuth2Api",
      "required": true,
      "displayOptions": {
        "show": {
          "authentication": [
            "oAuth2"
          ]
        }
      }
    }
  ]


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

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

output_names:
  [
  "Tool"
  ]

updated_at: 2026-07-16 12:10:22
tool_variant_of: nodes-base.signl4
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: SIGNL4 node documentation
  description: Learn how to use the SIGNL4 node in n8n. Follow technical documentation to integrate SIGNL4 node into your workflows.
  contentType: [integration, reference]
  ---

  # SIGNL4 node

  Use the SIGNL4 node to automate work in SIGNL4, and integrate SIGNL4 with other applications. n8n supports sending and resolving alerts with SIGNL4.

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

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

  ## Operations

  * Alert
      * Send an alert
      * Resolve an alert

  ## Templates and examples

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

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 SIGNL4"
    },
    {
      "displayName": "Resource",
      "name": "resource",
      "type": "options",
      "default": "alert",
      "options": [
        {
          "name": "Alert",
          "value": "alert"
        }
      ],
      "noDataExpression": true
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "send",
      "options": [
        {
          "name": "Send",
          "value": "send",
          "description": "Send an alert",
          "action": "Send an alert"
        },
        {
          "name": "Resolve",
          "value": "resolve",
          "description": "Resolve an alert",
          "action": "Resolve an alert"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "alert"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Message",
      "name": "message",
      "type": "string",
      "default": "",
      "description": "A more detailed description for the alert",
      "displayOptions": {
        "show": {
          "operation": [
            "send"
          ],
          "resource": [
            "alert"
          ]
        }
      }
    },
    {
      "displayName": "Additional Fields",
      "name": "additionalFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Alerting Scenario",
          "name": "alertingScenario",
          "type": "options",
          "options": [
            {
              "name": "Single ACK",
              "value": "single_ack",
              "description": "In case only one person needs to confirm this Signl"
            },
            {
              "name": "Multi ACK",
              "value": "multi_ack",
              "description": "In case this alert must be confirmed by the number of people who are on duty at the time this Singl is raised"
            }
          ],
          "default": "single_ack"
        },
        {
          "displayName": "Attachments",
          "name": "attachmentsUi",
          "placeholder": "Add Attachments",
          "type": "fixedCollection",
          "typeOptions": {
            "multipleValues": false
          },
          "options": [
            {
              "name": "attachmentsBinary",
              "displayName": "Attachments Binary",
              "values": [
                {
                  "displayName": "Property Name",
                  "name": "property",
                  "type": "string",
                  "placeholder": "data",
                  "default": "",
                  "description": "Name of the binary properties which contain data which should be added as attachment"
                }
              ]
            }
          ],
          "default": {}
        },
        {
          "displayName": "External ID",
          "name": "externalId",
          "type": "string",
          "default": "",
          "description": "If the event originates from a record in a 3rd party system, use this parameter to pass the unique ID of that record. That ID will be communicated in outbound webhook notifications from SIGNL4, which is great for correlation/synchronization of that record with the alert. If you resolve / close an alert you must use the same External ID as in the original alert."
        },
        {
          "displayName": "Filtering",
          "name": "filtering",
          "type": "boolean",
          "default": false,
          "description": "Whether to apply event filtering for this event, or not. If set to true, the event will only trigger a notification to the team, if it contains at least one keyword from one of your services and system categories (i.e. it is whitelisted)"
        },
        {
          "displayName": "Location",
          "name": "locationFieldsUi",
          "type": "fixedCollection",
          "placeholder": "Add Location",
          "default": {},
          "description": "Transmit location information ('latitude, longitude') with your event and display a map in the mobile app",
          "options": [
            {
              "name": "locationFieldsValues",
              "displayName": "Location",
              "values": [
                {
                  "displayName": "Latitude",
                  "name": "latitude",
                  "type": "string",
                  "required": true,
                  "description": "The location latitude",
                  "default": ""
                },
                {
                  "displayName": "Longitude",
                  "name": "longitude",
                  "type": "string",
                  "required": true,
                  "description": "The location longitude",
                  "default": ""
                }
              ]
            }
          ]
        },
        {
          "displayName": "Service",
          "name": "service",
          "type": "string",
          "default": "",
          "description": "Assigns the alert to the service/system category with the specified name"
        },
        {
          "displayName": "Title",
          "name": "title",
          "type": "string",
          "default": "",
          "description": "The title or subject of this alert"
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "send"
          ],
          "resource": [
            "alert"
          ]
        }
      }
    },
    {
      "displayName": "External ID",
      "name": "externalId",
      "type": "string",
      "default": "",
      "description": "If the event originates from a record in a 3rd party system, use this parameter to pass the unique ID of that record. That ID will be communicated in outbound webhook notifications from SIGNL4, which is great for correlation/synchronization of that record with the alert. If you resolve / close an alert you must use the same External ID as in the original alert.",
      "displayOptions": {
        "show": {
          "operation": [
            "resolve"
          ],
          "resource": [
            "alert"
          ]
        }
      }
    }
  ]

operations:
  [
    {
      "operation": "send",
      "name": "Send",
      "description": "Send an alert",
      "resource": "alert"
    },
    {
      "operation": "resolve",
      "name": "Resolve",
      "description": "Resolve an alert",
      "resource": "alert"
    }
  ]


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

outputs:
  [
  "main"
  ]

updated_at: 2026-07-16 12:10:22
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: SIGNL4 node documentation
  description: Learn how to use the SIGNL4 node in n8n. Follow technical documentation to integrate SIGNL4 node into your workflows.
  contentType: [integration, reference]
  ---

  # SIGNL4 node

  Use the SIGNL4 node to automate work in SIGNL4, and integrate SIGNL4 with other applications. n8n supports sending and resolving alerts with SIGNL4.

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

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

  ## Operations

  * Alert
      * Send an alert
      * Resolve an alert

  ## Templates and examples

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

properties_schema:
  [
    {
      "displayName": "Resource",
      "name": "resource",
      "type": "options",
      "default": "alert",
      "options": [
        {
          "name": "Alert",
          "value": "alert"
        }
      ],
      "noDataExpression": true
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "send",
      "options": [
        {
          "name": "Send",
          "value": "send",
          "description": "Send an alert",
          "action": "Send an alert"
        },
        {
          "name": "Resolve",
          "value": "resolve",
          "description": "Resolve an alert",
          "action": "Resolve an alert"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "alert"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Message",
      "name": "message",
      "type": "string",
      "default": "",
      "description": "A more detailed description for the alert",
      "displayOptions": {
        "show": {
          "operation": [
            "send"
          ],
          "resource": [
            "alert"
          ]
        }
      }
    },
    {
      "displayName": "Additional Fields",
      "name": "additionalFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Alerting Scenario",
          "name": "alertingScenario",
          "type": "options",
          "options": [
            {
              "name": "Single ACK",
              "value": "single_ack",
              "description": "In case only one person needs to confirm this Signl"
            },
            {
              "name": "Multi ACK",
              "value": "multi_ack",
              "description": "In case this alert must be confirmed by the number of people who are on duty at the time this Singl is raised"
            }
          ],
          "default": "single_ack"
        },
        {
          "displayName": "Attachments",
          "name": "attachmentsUi",
          "placeholder": "Add Attachments",
          "type": "fixedCollection",
          "typeOptions": {
            "multipleValues": false
          },
          "options": [
            {
              "name": "attachmentsBinary",
              "displayName": "Attachments Binary",
              "values": [
                {
                  "displayName": "Property Name",
                  "name": "property",
                  "type": "string",
                  "placeholder": "data",
                  "default": "",
                  "description": "Name of the binary properties which contain data which should be added as attachment"
                }
              ]
            }
          ],
          "default": {}
        },
        {
          "displayName": "External ID",
          "name": "externalId",
          "type": "string",
          "default": "",
          "description": "If the event originates from a record in a 3rd party system, use this parameter to pass the unique ID of that record. That ID will be communicated in outbound webhook notifications from SIGNL4, which is great for correlation/synchronization of that record with the alert. If you resolve / close an alert you must use the same External ID as in the original alert."
        },
        {
          "displayName": "Filtering",
          "name": "filtering",
          "type": "boolean",
          "default": false,
          "description": "Whether to apply event filtering for this event, or not. If set to true, the event will only trigger a notification to the team, if it contains at least one keyword from one of your services and system categories (i.e. it is whitelisted)"
        },
        {
          "displayName": "Location",
          "name": "locationFieldsUi",
          "type": "fixedCollection",
          "placeholder": "Add Location",
          "default": {},
          "description": "Transmit location information ('latitude, longitude') with your event and display a map in the mobile app",
          "options": [
            {
              "name": "locationFieldsValues",
              "displayName": "Location",
              "values": [
                {
                  "displayName": "Latitude",
                  "name": "latitude",
                  "type": "string",
                  "required": true,
                  "description": "The location latitude",
                  "default": ""
                },
                {
                  "displayName": "Longitude",
                  "name": "longitude",
                  "type": "string",
                  "required": true,
                  "description": "The location longitude",
                  "default": ""
                }
              ]
            }
          ]
        },
        {
          "displayName": "Service",
          "name": "service",
          "type": "string",
          "default": "",
          "description": "Assigns the alert to the service/system category with the specified name"
        },
        {
          "displayName": "Title",
          "name": "title",
          "type": "string",
          "default": "",
          "description": "The title or subject of this alert"
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "send"
          ],
          "resource": [
            "alert"
          ]
        }
      }
    },
    {
      "displayName": "External ID",
      "name": "externalId",
      "type": "string",
      "default": "",
      "description": "If the event originates from a record in a 3rd party system, use this parameter to pass the unique ID of that record. That ID will be communicated in outbound webhook notifications from SIGNL4, which is great for correlation/synchronization of that record with the alert. If you resolve / close an alert you must use the same External ID as in the original alert.",
      "displayOptions": {
        "show": {
          "operation": [
            "resolve"
          ],
          "resource": [
            "alert"
          ]
        }
      }
    }
  ]

operations:
  [
    {
      "operation": "send",
      "name": "Send",
      "description": "Send an alert",
      "resource": "alert"
    },
    {
      "operation": "resolve",
      "name": "Resolve",
      "description": "Resolve an alert",
      "resource": "alert"
    }
  ]


node_type: nodes-base.simulate
package_name: n8n-nodes-base
display_name: Simulate
description: Simulate a node
category: organization
development_style: programmatic
version: 1
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-16 12:10:22
properties_schema:
  [
    {
      "displayName": "Icon to Display on Canvas",
      "name": "icon",
      "type": "options",
      "default": "n8n-nodes-base.noOp",
      "description": "Select a type of node to show corresponding icon",
      "typeOptions": {
        "loadOptionsMethod": "getNodeTypes"
      }
    },
    {
      "displayName": "Subtitle",
      "name": "subtitle",
      "type": "string",
      "default": ""
    },
    {
      "displayName": "Output",
      "name": "output",
      "type": "options",
      "default": "all",
      "options": [
        {
          "name": "Returns all input items",
          "value": "all"
        },
        {
          "name": "Specify how many of input items to return",
          "value": "specify"
        },
        {
          "name": "Specify output as JSON",
          "value": "custom"
        }
      ],
      "noDataExpression": true
    },
    {
      "displayName": "Number of Items",
      "name": "numberOfItems",
      "type": "number",
      "default": 1,
      "description": "Number input of items to return, if greater then input length all items will be returned",
      "displayOptions": {
        "show": {
          "output": [
            "specify"
          ]
        }
      },
      "typeOptions": {
        "minValue": 1
      }
    },
    {
      "displayName": "JSON",
      "name": "jsonOutput",
      "type": "json",
      "default": "[\n  {\n  \"my_field_1\": \"value\",\n  \"my_field_2\": 1\n  }\n]",
      "displayOptions": {
        "show": {
          "output": [
            "custom"
          ]
        }
      },
      "typeOptions": {
        "rows": 5
      }
    },
    {
      "displayName": "Execution Duration (MS)",
      "name": "executionDuration",
      "type": "number",
      "default": 150,
      "description": "Execution duration in milliseconds",
      "typeOptions": {
        "minValue": 0
      }
    }
  ]


node_type: nodes-base.simulateTrigger
package_name: n8n-nodes-base
display_name: Simulate Trigger
description: Simulate a trigger node
category: trigger
development_style: programmatic
version: 1
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-07-16 12:10:22
properties_schema:
  [
    {
      "displayName": "Icon to Display on Canvas",
      "name": "icon",
      "type": "options",
      "default": "n8n-nodes-base.manualTrigger",
      "description": "Select a type of node to show corresponding icon",
      "typeOptions": {
        "loadOptionsMethod": "getNodeTypes"
      }
    },
    {
      "displayName": "Subtitle",
      "name": "subtitle",
      "type": "string",
      "default": ""
    },
    {
      "displayName": "Output (JSON)",
      "name": "jsonOutput",
      "type": "json",
      "default": "[\n  {\n  \"my_field_1\": \"value\",\n  \"my_field_2\": 1\n  }\n]",
      "typeOptions": {
        "rows": 5
      }
    },
    {
      "displayName": "Execution Duration (MS)",
      "name": "executionDuration",
      "type": "number",
      "default": 150,
      "description": "Execution duration in milliseconds",
      "typeOptions": {
        "minValue": 0
      }
    }
  ]


node_type: nodes-base.slack
package_name: n8n-nodes-base
display_name: Slack
description: Consume Slack API
category: output
development_style: programmatic
version: 2.5
outputs:
  [
  "main"
  ]

updated_at: 2026-07-16 12:10:22
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Slack node documentation
  description: Learn how to use the Slack node in n8n. Follow technical documentation to integrate Slack node into your workflows.
  contentType: [integration, reference]
  priority: high
  ---

  # Slack node

  Use the Slack node to automate work in Slack, and integrate Slack with other applications. n8n has built-in support for a wide range of Slack features, including creating, archiving, and closing channels, getting users and files, as well as deleting messages.

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

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

  ## Operations

  * **Channel**
      * **Archive** a channel.
      * **Close** a direct message or multi-person direct message.
      * **Create** a public or private channel-based conversation.
      * **Get** information about a channel.
      * **Get Many**: Get a list of channels in Slack.
      * **History**: Get a channel's history of messages and events.
      * **Invite** a user to a channel.
      * **Join** an existing channel.
      * **Kick**: Remove a user from a channel.
      * **Leave** a channel.
      * **Member**: List the members of a channel.
      * **Open** or resume a direct message or multi-person direct message.
      * **Rename** a channel.
      * **Replies**: Get a thread of messages posted to a channel.
      * **Sets purpose** of a channel.
      * **Sets topic** of a channel.
      * **Unarchive** a channel.
  * **File**
      * **Get** a file.
      * **Get Many**: Get and filter team files.
      * **Upload**: Create or upload an existing file.
  * **Message**
      * **Delete** a message
      * **Get permalink**: Get a message's permalink.
      * **Search** for messages
      * **Send** a message
      * **Send and Wait for Approval**: Send a message and wait for approval from the recipient before continuing.
      * **Update** a message
  * **Reaction**
      * **Add** a reaction to a message.
      * **Get** a message's reactions.
      * **Remove** a reaction from a message.
  * **Star**
      * **Add** a star to an item.
      * **Delete** a star from an item.
      * **Get Many**: Get a list of an authenticated user's stars.
  * **User**
      * **Get** information about a user.
  	* **Get Many**: Get a list of users.
      * **Get User's Profile**.
      * **Get User's Status**.
  	* **Update User's Profile**.
  * **User Group**
      * **Create** a user group.
      * **Disable** a user group.
      * **Enable** a user group.
      * **Get Many**: Get a list of user groups.
      * **Update** a user group.

  ## Templates and examples

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

  ## Related resources

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

  ## Required scopes

  Once you create a Slack app for your [Slack credentials](/integrations/builtin/credentials/slack.md), you must add the appropriate scopes to your Slack app for this node to work. Start with the scopes listed in the [Scopes | Slack credentials](/integrations/builtin/credentials/slack.md#scopes) page.

  If those aren't enough, use the table below to look up the resource and operation you want to use, then follow the link to Slack's API documentation to find the correct scopes.

  <!-- vale off -->

  | **Resource** | **Operation** | **Slack API method** |
  | --- | --- | --- |
  | Channel | Archive | [conversations.archive](https://api.slack.com/methods/conversations.archive){:target=blank .external-link} |
  | Channel | Close | [conversations.close](https://api.slack.com/methods/conversations.close){:target=blank .external-link} |
  | Channel | Create | [conversations.create](https://api.slack.com/methods/conversations.create){:target=blank .external-link} |
  | Channel | Get | [conversations.info](https://api.slack.com/methods/conversations.info){:target=blank .external-link} |
  | Channel | Get Many | [conversations.list](https://api.slack.com/methods/conversations.list){:target=blank .external-link} |
  | Channel | History | [conversations.history](https://api.slack.com/methods/conversations.history){:target=blank .external-link} |
  | Channel | Invite | [conversations.invite](https://api.slack.com/methods/conversations.invite){:target=blank .external-link} |
  | Channel | Join | [conversations.join](https://api.slack.com/methods/conversations.join){:target=blank .external-link} |
  | Channel | Kick | [conversations.kick](https://api.slack.com/methods/conversations.kick){:target=blank .external-link} |
  | Channel | Leave | [conversations.leave](https://api.slack.com/methods/conversations.leave){:target=blank .external-link} |
  | Channel | Member | [conversations.members](https://api.slack.com/methods/conversations.members){:target=blank .external-link} |
  | Channel | Open | [conversations.open](https://api.slack.com/methods/conversations.open){:target=blank .external-link} |
  | Channel | Rename | [conversations.rename](https://api.slack.com/methods/conversations.rename){:target=blank .external-link} |
  | Channel | Replies | [conversations.replies](https://api.slack.com/methods/conversations.replies){:target=blank .external-link} |
  | Channel | Set Purpose | [conversations.setPurpose](https://api.slack.com/methods/conversations.setPurpose){:target=blank .external-link} |
  | Channel | Set Topic | [conversations.setTopic](https://api.slack.com/methods/conversations.setTopic){:target=blank .external-link} |
  | Channel | Unarchive | [conversations.unarchive](https://api.slack.com/methods/conversations.unarchive){:target=blank .external-link} |
  | File | Get | [files.info](https://api.slack.com/methods/files.info){:target=blank .external-link} |
  | File | Get Many | [files.list](https://api.slack.com/methods/files.list){:target=blank .external-link} |
  | File | Upload | [files.upload](https://api.slack.com/methods/files.upload){:target=blank .external-link} |
  | Message | Delete | [chat.delete](https://api.slack.com/methods/chat.delete){:target=blank .external-link} |
  | Message | Get Permalink | [chat.getPermalink](https://api.slack.com/methods/chat.getPermalink){:target=blank .external-link} |
  | Message | Search | [search.messages](https://api.slack.com/methods/search.messages){:target=blank .external-link} |
  | Message | Send | [chat.postMessage](https://api.slack.com/methods/chat.postMessage){:target=blank .external-link} |
  | Message | Send and Wait for Approval | [chat.postMessage](https://api.slack.com/methods/chat.postMessage){:target=blank .external-link} |
  | Message | Update | [chat.update](https://api.slack.com/methods/chat.update){:target=blank .external-link} |
  | Reaction | Add | [reactions.add](https://api.slack.com/methods/reactions.add){:target=blank .external-link} |
  | Reaction | Get | [reactions.get](https://api.slack.com/methods/reactions.get){:target=blank .external-link} |
  | Reaction | Remove | [reactions.remove](https://api.slack.com/methods/reactions.remove){:target=blank .external-link} |
  | Star | Add | [stars.add](https://api.slack.com/methods/stars.add){:target=blank .external-link} |
  | Star | Delete | [stars.remove](https://api.slack.com/methods/stars.remove){:target=blank .external-link} |
  | Star | Get Many | [stars.list](https://api.slack.com/methods/stars.list){:target=blank .external-link} |
  | User | Get | [users.info](https://api.slack.com/methods/users.info){:target=blank .external-link} |
  | User | Get Many | [users.list](https://api.slack.com/methods/users.list){:target=blank .external-link} |
  | User | Get User's Profile | [users.profile.get](https://api.slack.com/methods/users.profile.get){:target=blank .external-link} |
  | User | Get User's Status | [users.getPresence](https://api.slack.com/methods/users.getPresence){:target=blank .external-link} |
  | User | Update User's Profile | [users.profile.set](https://api.slack.com/methods/users.profile.set){:target=blank .external-link} |
  | User Group | Create | [usergroups.create](https://api.slack.com/methods/usergroups.create){:target=blank .external-link} |
  | User Group | Disable | [usergroups.disable](https://api.slack.com/methods/usergroups.disable){:target=blank .external-link} |
  | User Group | Enable | [usergroups.enable](https://api.slack.com/methods/usergroups.enable){:target=blank .external-link} |
  | User Group | Get Many | [usergroups.list](https://api.slack.com/methods/usergroups.list){:target=blank .external-link} |
  | User Group | Update | [usergroups.update](https://api.slack.com/methods/usergroups.update){:target=blank .external-link} |

  <!-- vale on -->

  --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": "message",
      "options": [
        {
          "name": "Channel",
          "value": "channel"
        },
        {
          "name": "File",
          "value": "file"
        },
        {
          "name": "Message",
          "value": "message"
        },
        {
          "name": "Reaction",
          "value": "reaction"
        },
        {
          "name": "Star",
          "value": "star"
        },
        {
          "name": "User",
          "value": "user"
        },
        {
          "name": "User Group",
          "value": "userGroup"
        }
      ],
      "noDataExpression": true
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Archive",
          "value": "archive",
          "description": "Archives a conversation",
          "action": "Archive a channel"
        },
        {
          "name": "Close",
          "value": "close",
          "description": "Closes a direct message or multi-person direct message",
          "action": "Close a channel"
        },
        {
          "name": "Create",
          "value": "create",
          "description": "Initiates a public or private channel-based conversation",
          "action": "Create a channel"
        },
        {
          "name": "Get",
          "value": "get",
          "description": "Get information about a channel",
          "action": "Get a channel"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "description": "Get many channels in a Slack team",
          "action": "Get many channels"
        },
        {
          "name": "History",
          "value": "history",
          "description": "Get a conversation's history of messages and events",
          "action": "Get the history of a channel"
        },
        {
          "name": "Invite",
          "value": "invite",
          "description": "Invite a user to a channel",
          "action": "Invite a user to a channel"
        },
        {
          "name": "Join",
          "value": "join",
          "description": "Joins an existing conversation",
          "action": "Join a channel"
        },
        {
          "name": "Kick",
          "value": "kick",
          "description": "Removes a user from a channel",
          "action": "Kick a user from a channel"
        },
        {
          "name": "Leave",
          "value": "leave",
          "description": "Leaves a conversation",
          "action": "Leave a channel"
        },
        {
          "name": "Member",
          "value": "member",
          "description": "List members of a conversation",
          "action": "Get members of a channel"
        },
        {
          "name": "Open",
          "value": "open",
          "description": "Opens or resumes a direct message or multi-person direct message",
          "action": "Open a channel"
        },
        {
          "name": "Rename",
          "value": "rename",
          "description": "Renames a conversation",
          "action": "Rename a channel"
        },
        {
          "name": "Replies",
          "value": "replies",
          "description": "Get a thread of messages posted to a channel",
          "action": "Get a thread of messages posted to a channel"
        },
        {
          "name": "Set Purpose",
          "value": "setPurpose",
          "description": "Sets the purpose for a conversation",
          "action": "Set the purpose of a channel"
        },
        {
          "name": "Set Topic",
          "value": "setTopic",
          "description": "Sets the topic for a conversation",
          "action": "Set the topic of a channel"
        },
        {
          "name": "Unarchive",
          "value": "unarchive",
          "description": "Unarchives a conversation",
          "action": "Unarchive a channel"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "channel"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Channel",
      "name": "channelId",
      "type": "resourceLocator",
      "default": {
        "mode": "list",
        "value": ""
      },
      "description": "The Slack channel to archive",
      "displayOptions": {
        "show": {
          "operation": [
            "archive"
          ],
          "resource": [
            "channel"
          ]
        }
      },
      "modes": [
        {
          "displayName": "From List",
          "name": "list",
          "type": "list",
          "placeholder": "Select a channel...",
          "typeOptions": {
            "searchListMethod": "getChannels",
            "searchable": true,
            "slowLoadNotice": {
              "message": "If loading is slow, try selecting a channel using \"By ID\" or \"By URL\"",
              "timeout": 15000
            }
          }
        },
        {
          "displayName": "By ID",
          "name": "id",
          "type": "string",
          "validation": [
            {
              "type": "regex",
              "properties": {
                "regex": "[a-zA-Z0-9]{2,}",
                "errorMessage": "Not a valid Slack Channel ID"
              }
            }
          ],
          "placeholder": "C0122KQ70S7E"
        },
        {
          "displayName": "By URL",
          "name": "url",
          "type": "string",
          "placeholder": "https://app.slack.com/client/TS9594PZK/B0556F47Z3A",
          "validation": [
            {
              "type": "regex",
              "properties": {
                "regex": "http(s)?://app.slack.com/client/.*/([a-zA-Z0-9]{2,})",
                "errorMessage": "Not a valid Slack Channel URL"
              }
            }
          ],
          "extractValue": {
            "type": "regex",
            "regex": "https://app.slack.com/client/.*/([a-zA-Z0-9]{2,})"
          }
        }
      ]
    },
    {
      "displayName": "Channel",
      "name": "channelId",
      "type": "resourceLocator",
      "default": {
        "mode": "list",
        "value": ""
      },
      "description": "The Slack channel to close",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "close"
          ],
          "resource": [
            "channel"
          ]
        }
      },
      "modes": [
        {
          "displayName": "From List",
          "name": "list",
          "type": "list",
          "placeholder": "Select a channel...",
          "typeOptions": {
            "searchListMethod": "getChannels",
            "searchable": true,
            "slowLoadNotice": {
              "message": "If loading is slow, try selecting a channel using \"By ID\" or \"By URL\"",
              "timeout": 15000
            }
          }
        },
        {
          "displayName": "By ID",
          "name": "id",
          "type": "string",
          "validation": [
            {
              "type": "regex",
              "properties": {
                "regex": "[a-zA-Z0-9]{2,}",
                "errorMessage": "Not a valid Slack Channel ID"
              }
            }
          ],
          "placeholder": "C0122KQ70S7E"
        },
        {
          "displayName": "By URL",
          "name": "url",
          "type": "string",
          "placeholder": "https://app.slack.com/client/TS9594PZK/B0556F47Z3A",
          "validation": [
            {
              "type": "regex",
              "properties": {
                "regex": "http(s)?://app.slack.com/client/.*/([a-zA-Z0-9]{2,})",
                "errorMessage": "Not a valid Slack Channel URL"
              }
            }
          ],
          "extractValue": {
            "type": "regex",
            "regex": "https://app.slack.com/client/.*/([a-zA-Z0-9]{2,})"
          }
        }
      ]
    },
    {
      "displayName": "Channel",
      "name": "channelId",
      "type": "string",
      "default": "",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "channel"
          ]
        }
      }
    },
    {
      "displayName": "Channel Visibility",
      "name": "channelVisibility",
      "type": "options",
      "default": "public",
      "description": "Whether to create a Public or a Private Slack channel. <a href=\"https://slack.com/help/articles/360017938993-What-is-a-channel\">More info</a>.",
      "options": [
        {
          "name": "Public Channel",
          "value": "public"
        },
        {
          "name": "Private Channel",
          "value": "private"
        }
      ],
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "channel"
          ]
        }
      }
    },
    {
      "displayName": "Channel",
      "name": "channelId",
      "type": "resourceLocator",
      "default": {
        "mode": "list",
        "value": ""
      },
      "description": "The Slack channel to invite to",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "invite"
          ],
          "resource": [
            "channel"
          ]
        }
      },
      "modes": [
        {
          "displayName": "From List",
          "name": "list",
          "type": "list",
          "placeholder": "Select a channel...",
          "typeOptions": {
            "searchListMethod": "getChannels",
            "searchable": true,
            "slowLoadNotice": {
              "message": "If loading is slow, try selecting a channel using \"By ID\" or \"By URL\"",
              "timeout": 15000
            }
          }
        },
        {
          "displayName": "By ID",
          "name": "id",
          "type": "string",
          "validation": [
            {
              "type": "regex",
              "properties": {
                "regex": "[a-zA-Z0-9]{2,}",
                "errorMessage": "Not a valid Slack Channel ID"
              }
            }
          ],
          "placeholder": "C0122KQ70S7E"
        },
        {
          "displayName": "By URL",
          "name": "url",
          "type": "string",
          "placeholder": "https://app.slack.com/client/TS9594PZK/B0556F47Z3A",
          "validation": [
            {
              "type": "regex",
              "properties": {
                "regex": "http(s)?://app.slack.com/client/.*/([a-zA-Z0-9]{2,})",
                "errorMessage": "Not a valid Slack Channel URL"
              }
            }
          ],
          "extractValue": {
            "type": "regex",
            "regex": "https://app.slack.com/client/.*/([a-zA-Z0-9]{2,})"
          }
        }
      ]
    },
    {
      "displayName": "User Names or IDs",
      "name": "userIds",
      "type": "multiOptions",
      "default": [],
      "description": "The ID of the user to invite into channel. Choose from the list, or specify IDs using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>.",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "invite"
          ],
          "resource": [
            "channel"
          ]
        }
      },
      "typeOptions": {
        "loadOptionsMethod": "getUsers"
      }
    },
    {
      "displayName": "Channel",
      "name": "channelId",
      "type": "resourceLocator",
      "default": {
        "mode": "list",
        "value": ""
      },
      "description": "The Slack channel to get",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "get"
          ],
          "resource": [
            "channel"
          ]
        }
      },
      "modes": [
        {
          "displayName": "From List",
          "name": "list",
          "type": "list",
          "placeholder": "Select a channel...",
          "typeOptions": {
            "searchListMethod": "getChannels",
            "searchable": true,
            "slowLoadNotice": {
              "message": "If loading is slow, try selecting a channel using \"By ID\" or \"By URL\"",
              "timeout": 15000
            }
          }
        },
        {
          "displayName": "By ID",
          "name": "id",
          "type": "string",
          "validation": [
            {
              "type": "regex",
              "properties": {
                "regex": "[a-zA-Z0-9]{2,}",
                "errorMessage": "Not a valid Slack Channel ID"
              }
            }
          ],
          "placeholder": "C0122KQ70S7E"
        },
        {
          "displayName": "By URL",
          "name": "url",
          "type": "string",
          "placeholder": "https://app.slack.com/client/TS9594PZK/B0556F47Z3A",
          "validation": [
            {
              "type": "regex",
              "properties": {
                "regex": "http(s)?://app.slack.com/client/.*/([a-zA-Z0-9]{2,})",
                "errorMessage": "Not a valid Slack Channel URL"
              }
            }
          ],
          "extractValue": {
            "type": "regex",
            "regex": "https://app.slack.com/client/.*/([a-zA-Z0-9]{2,})"
          }
        }
      ]
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Include Num of Members",
          "name": "includeNumMembers",
          "type": "boolean",
          "default": false
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "channel"
          ],
          "operation": [
            "get"
          ]
        }
      }
    },
    {
      "displayName": "Channel",
      "name": "channelId",
      "type": "resourceLocator",
      "default": {
        "mode": "list",
        "value": ""
      },
      "description": "The Slack channel to kick the user from",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "kick"
          ],
          "resource": [
            "channel"
          ]
        }
      },
      "modes": [
        {
          "displayName": "From List",
          "name": "list",
          "type": "list",
          "placeholder": "Select a channel...",
          "typeOptions": {
            "searchListMethod": "getChannels",
            "searchable": true,
            "slowLoadNotice": {
              "message": "If loading is slow, try selecting a channel using \"By ID\" or \"By URL\"",
              "timeout": 15000
            }
          }
        },
        {
          "displayName": "By ID",
          "name": "id",
          "type": "string",
          "validation": [
            {
              "type": "regex",
              "properties": {
                "regex": "[a-zA-Z0-9]{2,}",
                "errorMessage": "Not a valid Slack Channel ID"
              }
            }
          ],
          "placeholder": "C0122KQ70S7E"
        },
        {
          "displayName": "By URL",
          "name": "url",
          "type": "string",
          "placeholder": "https://app.slack.com/client/TS9594PZK/B0556F47Z3A",
          "validation": [
            {
              "type": "regex",
              "properties": {
                "regex": "http(s)?://app.slack.com/client/.*/([a-zA-Z0-9]{2,})",
                "errorMessage": "Not a valid Slack Channel URL"
              }
            }
          ],
          "extractValue": {
            "type": "regex",
            "regex": "https://app.slack.com/client/.*/([a-zA-Z0-9]{2,})"
          }
        }
      ]
    },
    {
      "displayName": "User Name or ID",
      "name": "userId",
      "type": "options",
      "default": "",
      "description": "Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>",
      "displayOptions": {
        "show": {
          "operation": [
            "kick"
          ],
          "resource": [
            "channel"
          ]
        }
      },
      "typeOptions": {
        "loadOptionsMethod": "getUsers"
      }
    },
    {
      "displayName": "Channel",
      "name": "channelId",
      "type": "resourceLocator",
      "default": {
        "mode": "list",
        "value": ""
      },
      "description": "The Slack channel to join",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "join"
          ],
          "resource": [
            "channel"
          ]
        }
      },
      "modes": [
        {
          "displayName": "From List",
          "name": "list",
          "type": "list",
          "placeholder": "Select a channel...",
          "typeOptions": {
            "searchListMethod": "getChannels",
            "searchable": true,
            "slowLoadNotice": {
              "message": "If loading is slow, try selecting a channel using \"By ID\" or \"By URL\"",
              "timeout": 15000
            }
          }
        },
        {
          "displayName": "By ID",
          "name": "id",
          "type": "string",
          "validation": [
            {
              "type": "regex",
              "properties": {
                "regex": "[a-zA-Z0-9]{2,}",
                "errorMessage": "Not a valid Slack Channel ID"
              }
            }
          ],
          "placeholder": "C0122KQ70S7E"
        },
        {
          "displayName": "By URL",
          "name": "url",
          "type": "string",
          "placeholder": "https://app.slack.com/client/TS9594PZK/B0556F47Z3A",
          "validation": [
            {
              "type": "regex",
              "properties": {
                "regex": "http(s)?://app.slack.com/client/.*/([a-zA-Z0-9]{2,})",
                "errorMessage": "Not a valid Slack Channel URL"
              }
            }
          ],
          "extractValue": {
            "type": "regex",
            "regex": "https://app.slack.com/client/.*/([a-zA-Z0-9]{2,})"
          }
        }
      ]
    },
    {
      "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": [
            "channel"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 50,
      "description": "Max number of results to return",
      "displayOptions": {
        "show": {
          "resource": [
            "channel"
          ],
          "operation": [
            "getAll"
          ],
          "returnAll": [
            false
          ]
        }
      },
      "typeOptions": {
        "minValue": 1,
        "maxValue": 100
      }
    },
    {
      "displayName": "Filters",
      "name": "filters",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Exclude Archived",
          "name": "excludeArchived",
          "type": "boolean",
          "default": false,
          "description": "Whether to exclude archived channels from the list"
        },
        {
          "displayName": "Types",
          "name": "types",
          "type": "multiOptions",
          "options": [
            {
              "name": "Public Channel",
              "value": "public_channel"
            },
            {
              "name": "Private Channel",
              "value": "private_channel"
            },
            {
              "name": "mpim",
              "value": "mpim"
            },
            {
              "name": "im",
              "value": "im"
            }
          ],
          "default": [
            "public_channel"
          ],
          "description": "Mix and match channel types"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "channel"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Channel",
      "name": "channelId",
      "type": "resourceLocator",
      "default": {
        "mode": "list",
        "value": ""
      },
      "description": "The Slack channel to get the history from",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "history"
          ],
          "resource": [
            "channel"
          ]
        }
      },
      "modes": [
        {
          "displayName": "From List",
          "name": "list",
          "type": "list",
          "placeholder": "Select a channel...",
          "typeOptions": {
            "searchListMethod": "getChannels",
            "searchable": true,
            "slowLoadNotice": {
              "message": "If loading is slow, try selecting a channel using \"By ID\" or \"By URL\"",
              "timeout": 15000
            }
          }
        },
        {
          "displayName": "By ID",
          "name": "id",
          "type": "string",
          "validation": [
            {
              "type": "regex",
              "properties": {
                "regex": "[a-zA-Z0-9]{2,}",
                "errorMessage": "Not a valid Slack Channel ID"
              }
            }
          ],
          "placeholder": "C0122KQ70S7E"
        },
        {
          "displayName": "By URL",
          "name": "url",
          "type": "string",
          "placeholder": "https://app.slack.com/client/TS9594PZK/B0556F47Z3A",
          "validation": [
            {
              "type": "regex",
              "properties": {
                "regex": "http(s)?://app.slack.com/client/.*/([a-zA-Z0-9]{2,})",
                "errorMessage": "Not a valid Slack Channel URL"
              }
            }
          ],
          "extractValue": {
            "type": "regex",
            "regex": "https://app.slack.com/client/.*/([a-zA-Z0-9]{2,})"
          }
        }
      ]
    },
    {
      "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": [
            "channel"
          ],
          "operation": [
            "history"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 50,
      "description": "Max number of results to return",
      "displayOptions": {
        "show": {
          "resource": [
            "channel"
          ],
          "operation": [
            "history"
          ],
          "returnAll": [
            false
          ]
        }
      },
      "typeOptions": {
        "minValue": 1,
        "maxValue": 100
      }
    },
    {
      "displayName": "Filters",
      "name": "filters",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Inclusive",
          "name": "inclusive",
          "type": "boolean",
          "default": false,
          "description": "Whether to include messages with latest or oldest timestamp in results only when either timestamp is specified"
        },
        {
          "displayName": "Latest",
          "name": "latest",
          "type": "dateTime",
          "default": "",
          "description": "End of time range of messages to include in results"
        },
        {
          "displayName": "Oldest",
          "name": "oldest",
          "type": "dateTime",
          "default": "",
          "description": "Start of time range of messages to include in results"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "channel"
          ],
          "operation": [
            "history"
          ]
        }
      }
    },
    {
      "displayName": "Channel",
      "name": "channelId",
      "type": "resourceLocator",
      "default": {
        "mode": "list",
        "value": ""
      },
      "description": "The Slack channel to leave from",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "leave"
          ],
          "resource": [
            "channel"
          ]
        }
      },
      "modes": [
        {
          "displayName": "From List",
          "name": "list",
          "type": "list",
          "placeholder": "Select a channel...",
          "typeOptions": {
            "searchListMethod": "getChannels",
            "searchable": true,
            "slowLoadNotice": {
              "message": "If loading is slow, try selecting a channel using \"By ID\" or \"By URL\"",
              "timeout": 15000
            }
          }
        },
        {
          "displayName": "By ID",
          "name": "id",
          "type": "string",
          "validation": [
            {
              "type": "regex",
              "properties": {
                "regex": "[a-zA-Z0-9]{2,}",
                "errorMessage": "Not a valid Slack Channel ID"
              }
            }
          ],
          "placeholder": "C0122KQ70S7E"
        },
        {
          "displayName": "By URL",
          "name": "url",
          "type": "string",
          "placeholder": "https://app.slack.com/client/TS9594PZK/B0556F47Z3A",
          "validation": [
            {
              "type": "regex",
              "properties": {
                "regex": "http(s)?://app.slack.com/client/.*/([a-zA-Z0-9]{2,})",
                "errorMessage": "Not a valid Slack Channel URL"
              }
            }
          ],
          "extractValue": {
            "type": "regex",
            "regex": "https://app.slack.com/client/.*/([a-zA-Z0-9]{2,})"
          }
        }
      ]
    },
    {
      "displayName": "Channel",
      "name": "channelId",
      "type": "resourceLocator",
      "default": {
        "mode": "list",
        "value": ""
      },
      "description": "The Slack channel to get the members from",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "member"
          ],
          "resource": [
            "channel"
          ]
        }
      },
      "modes": [
        {
          "displayName": "From List",
          "name": "list",
          "type": "list",
          "placeholder": "Select a channel...",
          "typeOptions": {
            "searchListMethod": "getChannels",
            "searchable": true,
            "slowLoadNotice": {
              "message": "If loading is slow, try selecting a channel using \"By ID\" or \"By URL\"",
              "timeout": 15000
            }
          }
        },
        {
          "displayName": "By ID",
          "name": "id",
          "type": "string",
          "validation": [
            {
              "type": "regex",
              "properties": {
                "regex": "[a-zA-Z0-9]{2,}",
                "errorMessage": "Not a valid Slack Channel ID"
              }
            }
          ],
          "placeholder": "C0122KQ70S7E"
        },
        {
          "displayName": "By URL",
          "name": "url",
          "type": "string",
          "placeholder": "https://app.slack.com/client/TS9594PZK/B0556F47Z3A",
          "validation": [
            {
              "type": "regex",
              "properties": {
                "regex": "http(s)?://app.slack.com/client/.*/([a-zA-Z0-9]{2,})",
                "errorMessage": "Not a valid Slack Channel URL"
              }
            }
          ],
          "extractValue": {
            "type": "regex",
            "regex": "https://app.slack.com/client/.*/([a-zA-Z0-9]{2,})"
          }
        }
      ]
    },
    {
      "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": [
            "channel"
          ],
          "operation": [
            "member"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 100,
      "description": "Max number of results to return",
      "displayOptions": {
        "show": {
          "operation": [
            "member"
          ],
          "resource": [
            "channel"
          ],
          "returnAll": [
            false
          ]
        }
      },
      "typeOptions": {
        "minValue": 1
      }
    },
    {
      "displayName": "Resolve Data",
      "name": "resolveData",
      "type": "boolean",
      "default": false,
      "description": "Whether to resolve the data automatically. By default the response only contain the ID to resource.",
      "displayOptions": {
        "show": {
          "resource": [
            "channel"
          ],
          "operation": [
            "member"
          ]
        }
      }
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Channel ID",
          "name": "channelId",
          "type": "string",
          "default": "",
          "description": "Resume a conversation by supplying an im or mpim's ID. Or provide the users field instead."
        },
        {
          "displayName": "Return IM",
          "name": "returnIm",
          "type": "boolean",
          "default": false,
          "description": "Whether you want the full IM channel definition in the response"
        },
        {
          "displayName": "User Names or IDs",
          "name": "users",
          "type": "multiOptions",
          "typeOptions": {
            "loadOptionsMethod": "getUsers"
          },
          "default": [],
          "description": "If only one user is included, this creates a 1:1 DM. The ordering of the users is preserved whenever a multi-person direct message is returned. Supply a channel when not supplying users. Choose from the list, or specify IDs using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>."
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "channel"
          ],
          "operation": [
            "open"
          ]
        }
      }
    },
    {
      "displayName": "Channel",
      "name": "channelId",
      "type": "resourceLocator",
      "default": {
        "mode": "list",
        "value": ""
      },
      "description": "The Slack channel to rename",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "rename"
          ],
          "resource": [
            "channel"
          ]
        }
      },
      "modes": [
        {
          "displayName": "From List",
          "name": "list",
          "type": "list",
          "placeholder": "Select a channel...",
          "typeOptions": {
            "searchListMethod": "getChannels",
            "searchable": true,
            "slowLoadNotice": {
              "message": "If loading is slow, try selecting a channel using \"By ID\" or \"By URL\"",
              "timeout": 15000
            }
          }
        },
        {
          "displayName": "By ID",
          "name": "id",
          "type": "string",
          "validation": [
            {
              "type": "regex",
              "properties": {
                "regex": "[a-zA-Z0-9]{2,}",
                "errorMessage": "Not a valid Slack Channel ID"
              }
            }
          ],
          "placeholder": "C0122KQ70S7E"
        },
        {
          "displayName": "By URL",
          "name": "url",
          "type": "string",
          "placeholder": "https://app.slack.com/client/TS9594PZK/B0556F47Z3A",
          "validation": [
            {
              "type": "regex",
              "properties": {
                "regex": "http(s)?://app.slack.com/client/.*/([a-zA-Z0-9]{2,})",
                "errorMessage": "Not a valid Slack Channel URL"
              }
            }
          ],
          "extractValue": {
            "type": "regex",
            "regex": "https://app.slack.com/client/.*/([a-zA-Z0-9]{2,})"
          }
        }
      ]
    },
    {
      "displayName": "Name",
      "name": "name",
      "type": "string",
      "default": "",
      "description": "New name for conversation",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "rename"
          ],
          "resource": [
            "channel"
          ]
        }
      }
    },
    {
      "displayName": "Channel",
      "name": "channelId",
      "type": "resourceLocator",
      "default": {
        "mode": "list",
        "value": ""
      },
      "description": "The Slack channel to replies to",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "replies"
          ],
          "resource": [
            "channel"
          ]
        }
      },
      "modes": [
        {
          "displayName": "From List",
          "name": "list",
          "type": "list",
          "placeholder": "Select a channel...",
          "typeOptions": {
            "searchListMethod": "getChannels",
            "searchable": true,
            "slowLoadNotice": {
              "message": "If loading is slow, try selecting a channel using \"By ID\" or \"By URL\"",
              "timeout": 15000
            }
          }
        },
        {
          "displayName": "By ID",
          "name": "id",
          "type": "string",
          "validation": [
            {
              "type": "regex",
              "properties": {
                "regex": "[a-zA-Z0-9]{2,}",
                "errorMessage": "Not a valid Slack Channel ID"
              }
            }
          ],
          "placeholder": "C0122KQ70S7E"
        },
        {
          "displayName": "By URL",
          "name": "url",
          "type": "string",
          "placeholder": "https://app.slack.com/client/TS9594PZK/B0556F47Z3A",
          "validation": [
            {
              "type": "regex",
              "properties": {
                "regex": "http(s)?://app.slack.com/client/.*/([a-zA-Z0-9]{2,})",
                "errorMessage": "Not a valid Slack Channel URL"
              }
            }
          ],
          "extractValue": {
            "type": "regex",
            "regex": "https://app.slack.com/client/.*/([a-zA-Z0-9]{2,})"
          }
        }
      ]
    },
    {
      "displayName": "Message Timestamp",
      "name": "ts",
      "type": "number",
      "description": "Timestamp of the message to reply",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "replies"
          ],
          "resource": [
            "channel"
          ]
        }
      }
    },
    {
      "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": [
            "channel"
          ],
          "operation": [
            "replies"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 50,
      "description": "Max number of results to return",
      "displayOptions": {
        "show": {
          "resource": [
            "channel"
          ],
          "operation": [
            "replies"
          ],
          "returnAll": [
            false
          ]
        }
      },
      "typeOptions": {
        "minValue": 1,
        "maxValue": 100
      }
    },
    {
      "displayName": "Filters",
      "name": "filters",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Inclusive",
          "name": "inclusive",
          "type": "boolean",
          "default": false,
          "description": "Whether to include messages with latest or oldest timestamp in results only when either timestamp is specified"
        },
        {
          "displayName": "Latest",
          "name": "latest",
          "type": "string",
          "default": "",
          "description": "End of time range of messages to include in results"
        },
        {
          "displayName": "Oldest",
          "name": "oldest",
          "type": "string",
          "default": "",
          "description": "Start of time range of messages to include in results"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "channel"
          ],
          "operation": [
            "replies"
          ]
        }
      }
    },
    {
      "displayName": "Channel",
      "name": "channelId",
      "type": "resourceLocator",
      "default": {
        "mode": "list",
        "value": ""
      },
      "description": "The Slack channel to set the purpose of",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "setPurpose"
          ],
          "resource": [
            "channel"
          ]
        }
      },
      "modes": [
        {
          "displayName": "From List",
          "name": "list",
          "type": "list",
          "placeholder": "Select a channel...",
          "typeOptions": {
            "searchListMethod": "getChannels",
            "searchable": true,
            "slowLoadNotice": {
              "message": "If loading is slow, try selecting a channel using \"By ID\" or \"By URL\"",
              "timeout": 15000
            }
          }
        },
        {
          "displayName": "By ID",
          "name": "id",
          "type": "string",
          "validation": [
            {
              "type": "regex",
              "properties": {
                "regex": "[a-zA-Z0-9]{2,}",
                "errorMessage": "Not a valid Slack Channel ID"
              }
            }
          ],
          "placeholder": "C0122KQ70S7E"
        },
        {
          "displayName": "By URL",
          "name": "url",
          "type": "string",
          "placeholder": "https://app.slack.com/client/TS9594PZK/B0556F47Z3A",
          "validation": [
            {
              "type": "regex",
              "properties": {
                "regex": "http(s)?://app.slack.com/client/.*/([a-zA-Z0-9]{2,})",
                "errorMessage": "Not a valid Slack Channel URL"
              }
            }
          ],
          "extractValue": {
            "type": "regex",
            "regex": "https://app.slack.com/client/.*/([a-zA-Z0-9]{2,})"
          }
        }
      ]
    },
    {
      "displayName": "Purpose",
      "name": "purpose",
      "type": "string",
      "default": "",
      "description": "A new, specialer purpose",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "setPurpose"
          ],
          "resource": [
            "channel"
          ]
        }
      }
    },
    {
      "displayName": "Channel",
      "name": "channelId",
      "type": "resourceLocator",
      "default": {
        "mode": "list",
        "value": ""
      },
      "description": "The Slack channel to set the topic of",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "setTopic"
          ],
          "resource": [
            "channel"
          ]
        }
      },
      "modes": [
        {
          "displayName": "From List",
          "name": "list",
          "type": "list",
          "placeholder": "Select a channel...",
          "typeOptions": {
            "searchListMethod": "getChannels",
            "searchable": true,
            "slowLoadNotice": {
              "message": "If loading is slow, try selecting a channel using \"By ID\" or \"By URL\"",
              "timeout": 15000
            }
          }
        },
        {
          "displayName": "By ID",
          "name": "id",
          "type": "string",
          "validation": [
            {
              "type": "regex",
              "properties": {
                "regex": "[a-zA-Z0-9]{2,}",
                "errorMessage": "Not a valid Slack Channel ID"
              }
            }
          ],
          "placeholder": "C0122KQ70S7E"
        },
        {
          "displayName": "By URL",
          "name": "url",
          "type": "string",
          "placeholder": "https://app.slack.com/client/TS9594PZK/B0556F47Z3A",
          "validation": [
            {
              "type": "regex",
              "properties": {
                "regex": "http(s)?://app.slack.com/client/.*/([a-zA-Z0-9]{2,})",
                "errorMessage": "Not a valid Slack Channel URL"
              }
            }
          ],
          "extractValue": {
            "type": "regex",
            "regex": "https://app.slack.com/client/.*/([a-zA-Z0-9]{2,})"
          }
        }
      ]
    },
    {
      "displayName": "Topic",
      "name": "topic",
      "type": "string",
      "default": "",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "setTopic"
          ],
          "resource": [
            "channel"
          ]
        }
      }
    },
    {
      "displayName": "Channel",
      "name": "channelId",
      "type": "resourceLocator",
      "default": {
        "mode": "list",
        "value": ""
      },
      "description": "The Slack channel to unarchive",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "unarchive"
          ],
          "resource": [
            "channel"
          ]
        }
      },
      "modes": [
        {
          "displayName": "From List",
          "name": "list",
          "type": "list",
          "placeholder": "Select a channel...",
          "typeOptions": {
            "searchListMethod": "getChannels",
            "searchable": true,
            "slowLoadNotice": {
              "message": "If loading is slow, try selecting a channel using \"By ID\" or \"By URL\"",
              "timeout": 15000
            }
          }
        },
        {
          "displayName": "By ID",
          "name": "id",
          "type": "string",
          "validation": [
            {
              "type": "regex",
              "properties": {
                "regex": "[a-zA-Z0-9]{2,}",
                "errorMessage": "Not a valid Slack Channel ID"
              }
            }
          ],
          "placeholder": "C0122KQ70S7E"
        },
        {
          "displayName": "By URL",
          "name": "url",
          "type": "string",
          "placeholder": "https://app.slack.com/client/TS9594PZK/B0556F47Z3A",
          "validation": [
            {
              "type": "regex",
              "properties": {
                "regex": "http(s)?://app.slack.com/client/.*/([a-zA-Z0-9]{2,})",
                "errorMessage": "Not a valid Slack Channel URL"
              }
            }
          ],
          "extractValue": {
            "type": "regex",
            "regex": "https://app.slack.com/client/.*/([a-zA-Z0-9]{2,})"
          }
        }
      ]
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "post",
      "options": [
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a message"
        },
        {
          "name": "Delete Scheduled",
          "value": "deleteScheduled",
          "action": "Delete a scheduled message"
        },
        {
          "name": "Get Many Scheduled",
          "value": "getManyScheduled",
          "action": "Get many scheduled messages"
        },
        {
          "name": "Get Permalink",
          "value": "getPermalink",
          "action": "Get a message permalink"
        },
        {
          "name": "Schedule",
          "value": "schedule",
          "action": "Schedule a message"
        },
        {
          "name": "Search",
          "value": "search",
          "action": "Search for messages"
        },
        {
          "name": "Send",
          "value": "post",
          "action": "Send a message"
        },
        {
          "name": "Send and Wait for Response",
          "value": "sendAndWait",
          "action": "Send message and wait for response"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a message"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "message"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Channel",
      "name": "channelId",
      "type": "resourceLocator",
      "default": {
        "mode": "list",
        "value": ""
      },
      "description": "The Slack channel to get the message permalink from",
      "displayOptions": {
        "show": {
          "resource": [
            "message"
          ],
          "operation": [
            "getPermalink"
          ]
        }
      },
      "modes": [
        {
          "displayName": "From List",
          "name": "list",
          "type": "list",
          "placeholder": "Select a channel...",
          "typeOptions": {
            "searchListMethod": "getChannels",
            "searchable": true,
            "slowLoadNotice": {
              "message": "If loading is slow, try selecting a channel using \"By ID\" or \"By URL\"",
              "timeout": 15000
            }
          }
        },
        {
          "displayName": "By ID",
          "name": "id",
          "type": "string",
          "validation": [
            {
              "type": "regex",
              "properties": {
                "regex": "[a-zA-Z0-9]{2,}",
                "errorMessage": "Not a valid Slack Channel ID"
              }
            }
          ],
          "placeholder": "C0122KQ70S7E"
        },
        {
          "displayName": "By URL",
          "name": "url",
          "type": "string",
          "placeholder": "https://app.slack.com/client/TS9594PZK/B0556F47Z3A",
          "validation": [
            {
              "type": "regex",
              "properties": {
                "regex": "http(s)?://app.slack.com/client/.*/([a-zA-Z0-9]{2,})",
                "errorMessage": "Not a valid Slack Channel URL"
              }
            }
          ],
          "extractValue": {
            "type": "regex",
            "regex": "https://app.slack.com/client/.*/([a-zA-Z0-9]{2,})"
          }
        }
      ]
    },
    {
      "displayName": "Message Timestamp",
      "name": "timestamp",
      "type": "number",
      "description": "Timestamp of the message to message",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "message"
          ],
          "operation": [
            "getPermalink"
          ]
        }
      }
    },
    {
      "displayName": "Send Message To",
      "name": "select",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Channel",
          "value": "channel"
        },
        {
          "name": "User",
          "value": "user"
        }
      ],
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "message"
          ],
          "operation": [
            "post",
            "schedule"
          ]
        }
      }
    },
    {
      "displayName": "Channel",
      "name": "channelId",
      "type": "resourceLocator",
      "default": {
        "mode": "list",
        "value": ""
      },
      "description": "The Slack channel to send to",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "post",
            "schedule"
          ],
          "resource": [
            "message"
          ],
          "select": [
            "channel"
          ]
        }
      },
      "modes": [
        {
          "displayName": "From List",
          "name": "list",
          "type": "list",
          "placeholder": "Select a channel...",
          "typeOptions": {
            "searchListMethod": "getChannels",
            "searchable": true
          }
        },
        {
          "displayName": "By ID",
          "name": "id",
          "type": "string",
          "validation": [
            {
              "type": "regex",
              "properties": {
                "regex": "^(?:[CGD][A-Z0-9]{2,}|#?[a-z0-9_\\-]{2,})$",
                "errorMessage": "Not a valid Slack Channel ID or name"
              }
            }
          ],
          "placeholder": "C0122KQ70S7E"
        },
        {
          "displayName": "By Name",
          "name": "name",
          "type": "string",
          "placeholder": "#general"
        },
        {
          "displayName": "By URL",
          "name": "url",
          "type": "string",
          "placeholder": "https://app.slack.com/client/TS9594PZK/B0556F47Z3A",
          "validation": [
            {
              "type": "regex",
              "properties": {
                "regex": "http(s)?://app.slack.com/client/.*/([a-zA-Z0-9]{2,})",
                "errorMessage": "Not a valid Slack Channel URL"
              }
            }
          ],
          "extractValue": {
            "type": "regex",
            "regex": "https://app.slack.com/client/.*/([a-zA-Z0-9]{2,})"
          }
        }
      ]
    },
    {
      "displayName": "User",
      "name": "user",
      "type": "resourceLocator",
      "default": {
        "mode": "list",
        "value": ""
      },
      "displayOptions": {
        "show": {
          "operation": [
            "post",
            "schedule"
          ],
          "resource": [
            "message"
          ],
          "select": [
            "user"
          ]
        }
      },
      "modes": [
        {
          "displayName": "From List",
          "name": "list",
          "type": "list",
          "placeholder": "Select a user...",
          "typeOptions": {
            "searchListMethod": "getUsers",
            "searchable": true
          }
        },
        {
          "displayName": "By ID",
          "name": "id",
          "type": "string",
          "validation": [
            {
              "type": "regex",
              "properties": {
                "regex": "[a-zA-Z0-9]{2,}",
                "errorMessage": "Not a valid Slack User ID"
              }
            }
          ],
          "placeholder": "U123AB45JGM"
        },
        {
          "displayName": "By username",
          "name": "username",
          "type": "string",
          "placeholder": "@username"
        }
      ]
    },
    {
      "displayName": "Message Type",
      "name": "messageType",
      "type": "options",
      "default": "text",
      "description": "Whether to send a simple text message, or use Slack’s Blocks UI builder for more sophisticated messages that include form fields, sections and more",
      "options": [
        {
          "name": "Simple Text Message",
          "value": "text",
          "description": "Supports basic Markdown"
        },
        {
          "name": "Blocks",
          "value": "block",
          "description": "Combine text, buttons, form elements, dividers and more in Slack 's visual builder"
        },
        {
          "name": "Attachments",
          "value": "attachment"
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "post",
            "schedule"
          ],
          "resource": [
            "message"
          ]
        }
      }
    },
    {
      "displayName": "Message Text",
      "name": "text",
      "type": "string",
      "default": "",
      "description": "The message text to post. Supports <a href=\"https://api.slack.com/reference/surfaces/formatting\">markdown</a> by default - this can be disabled in \"Options\".",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "post",
            "schedule"
          ],
          "resource": [
            "message"
          ],
          "messageType": [
            "text"
          ]
        }
      }
    },
    {
      "displayName": "Blocks",
      "name": "blocksUi",
      "type": "string",
      "default": "",
      "description": "Enter the JSON output from Slack's visual Block Kit Builder here. You can then use expressions to add variable content to your blocks. To create blocks, use <a target='_blank' href='https://app.slack.com/block-kit-builder'>Slack's Block Kit Builder</a>",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "post",
            "schedule"
          ],
          "resource": [
            "message"
          ],
          "messageType": [
            "block"
          ]
        }
      },
      "typeOptions": {
        "rows": 3
      }
    },
    {
      "displayName": "Notification Text",
      "name": "text",
      "type": "string",
      "default": "",
      "description": "Fallback text to display in slack notifications. Supports <a href=\"https://api.slack.com/reference/surfaces/formatting\">markdown</a> by default - this can be disabled in \"Options\".",
      "displayOptions": {
        "show": {
          "operation": [
            "post",
            "schedule"
          ],
          "resource": [
            "message"
          ],
          "messageType": [
            "block"
          ]
        }
      }
    },
    {
      "displayName": "This is a legacy Slack feature. Slack advises to instead use Blocks.",
      "name": "noticeAttachments",
      "type": "notice",
      "default": "",
      "displayOptions": {
        "show": {
          "operation": [
            "post",
            "schedule"
          ],
          "resource": [
            "message"
          ],
          "messageType": [
            "attachment"
          ]
        }
      }
    },
    {
      "displayName": "Attachments",
      "name": "attachments",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Fallback Text",
          "name": "fallback",
          "type": "string",
          "typeOptions": {
            "alwaysOpenEditWindow": true
          },
          "default": "",
          "description": "Required plain-text summary of the attachment"
        },
        {
          "displayName": "Text",
          "name": "text",
          "type": "string",
          "typeOptions": {
            "alwaysOpenEditWindow": true
          },
          "default": ""
        },
        {
          "displayName": "Title",
          "name": "title",
          "type": "string",
          "typeOptions": {
            "alwaysOpenEditWindow": true
          },
          "default": ""
        },
        {
          "displayName": "Title Link",
          "name": "title_link",
          "type": "string",
          "typeOptions": {
            "alwaysOpenEditWindow": true
          },
          "default": ""
        },
        {
          "displayName": "Color",
          "name": "color",
          "type": "color",
          "default": "#ff0000",
          "description": "Color of the line left of text"
        },
        {
          "displayName": "Pretext",
          "name": "pretext",
          "type": "string",
          "typeOptions": {
            "alwaysOpenEditWindow": true
          },
          "default": "",
          "description": "Text which appears before the message block"
        },
        {
          "displayName": "Author Name",
          "name": "author_name",
          "type": "string",
          "default": "",
          "description": "Name that should appear"
        },
        {
          "displayName": "Author Link",
          "name": "author_link",
          "type": "string",
          "typeOptions": {
            "alwaysOpenEditWindow": true
          },
          "default": ""
        },
        {
          "displayName": "Author Icon",
          "name": "author_icon",
          "type": "string",
          "typeOptions": {
            "alwaysOpenEditWindow": true
          },
          "default": "",
          "description": "Icon which should appear for the user"
        },
        {
          "displayName": "Image URL",
          "name": "image_url",
          "type": "string",
          "typeOptions": {
            "alwaysOpenEditWindow": true
          },
          "default": ""
        },
        {
          "displayName": "Thumbnail URL",
          "name": "thumb_url",
          "type": "string",
          "typeOptions": {
            "alwaysOpenEditWindow": true
          },
          "default": ""
        },
        {
          "displayName": "Footer",
          "name": "footer",
          "type": "string",
          "typeOptions": {
            "alwaysOpenEditWindow": true
          },
          "default": "",
          "description": "Text of footer to add"
        },
        {
          "displayName": "Footer Icon",
          "name": "footer_icon",
          "type": "string",
          "typeOptions": {
            "alwaysOpenEditWindow": true
          },
          "default": "",
          "description": "Icon which should appear next to footer"
        },
        {
          "displayName": "Message Timestamp",
          "name": "ts",
          "type": "number",
          "default": 0,
          "description": "Timestamp of the message to post",
          "placeholder": "1663233118.856619"
        },
        {
          "displayName": "Fields",
          "name": "fields",
          "placeholder": "Add Fields",
          "description": "Fields to add to message",
          "type": "fixedCollection",
          "typeOptions": {
            "multipleValues": true
          },
          "default": {},
          "options": [
            {
              "name": "item",
              "displayName": "Item",
              "values": [
                {
                  "displayName": "Title",
                  "name": "title",
                  "type": "string",
                  "default": ""
                },
                {
                  "displayName": "Value",
                  "name": "value",
                  "type": "string",
                  "default": ""
                },
                {
                  "displayName": "Short",
                  "name": "short",
                  "type": "boolean",
                  "default": true,
                  "description": "Whether items can be displayed next to each other"
                }
              ]
            }
          ]
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "post",
            "schedule"
          ],
          "resource": [
            "message"
          ],
          "messageType": [
            "attachment"
          ]
        }
      },
      "typeOptions": {
        "multipleValues": true,
        "multipleValueButtonText": "Add attachment"
      }
    },
    {
      "displayName": "Post At",
      "name": "postAt",
      "type": "dateTime",
      "default": "",
      "description": "When the message should be sent. Must be in the future and within 120 days from now.",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "message"
          ],
          "operation": [
            "schedule"
          ]
        }
      }
    },
    {
      "displayName": "Options",
      "name": "otherOptions",
      "type": "collection",
      "default": {},
      "description": "Other options to set",
      "options": [
        {
          "displayName": "Include Link to Workflow",
          "name": "includeLinkToWorkflow",
          "type": "boolean",
          "default": true,
          "description": "Whether to append a link to this workflow at the end of the message. This is helpful if you have many workflows sending Slack messages."
        },
        {
          "displayName": "Custom Bot Profile Photo",
          "name": "botProfile",
          "type": "fixedCollection",
          "default": {
            "imageValues": [
              {
                "profilePhotoType": ""
              }
            ]
          },
          "description": "Set an image or an emoji as the Profile Photo (avatar) of the bot sending the message. Will not be used if sending message as a user.",
          "options": [
            {
              "name": "imageValues",
              "displayName": "Add Bot Profile Photo",
              "values": [
                {
                  "displayName": "Profile Photo Type",
                  "name": "profilePhotoType",
                  "type": "options",
                  "options": [
                    {
                      "name": "Image URL",
                      "value": "image"
                    },
                    {
                      "name": "Emoji Code",
                      "value": "emoji"
                    }
                  ],
                  "default": "",
                  "placeholder": "Select a type…"
                },
                {
                  "displayName": "Emoji Code",
                  "name": "icon_emoji",
                  "type": "string",
                  "default": "",
                  "displayOptions": {
                    "show": {
                      "profilePhotoType": [
                        "emoji"
                      ]
                    }
                  },
                  "description": "Only used if sending message as a bot. Use emoji codes like +1, not an actual emoji like 👍. <a target=\"_blank\" href=\" https://www.webfx.com/tools/emoji-cheat-sheet/\">List of common emoji codes</a>"
                },
                {
                  "displayName": "Image URL",
                  "name": "icon_url",
                  "type": "string",
                  "default": "",
                  "displayOptions": {
                    "show": {
                      "profilePhotoType": [
                        "image"
                      ]
                    }
                  },
                  "description": "Only used if sending message as a bot"
                }
              ]
            }
          ]
        },
        {
          "displayName": "Link User and Channel Names",
          "name": "link_names",
          "type": "boolean",
          "default": false,
          "description": "Whether to turn @users and #channels in message text into clickable links"
        },
        {
          "displayName": "Reply to a Message",
          "name": "thread_ts",
          "type": "fixedCollection",
          "default": {},
          "placeholder": "Reply to a Message",
          "description": "Provide another message's Timestamp value to make this message a reply",
          "options": [
            {
              "displayName": "Reply to a Message",
              "name": "replyValues",
              "values": [
                {
                  "displayName": "Message Timestamp to Reply To",
                  "name": "thread_ts",
                  "type": "number",
                  "placeholder": "1663233118.856619",
                  "description": "Message timestamps are included in output data of Slack nodes, abbreviated to ts"
                },
                {
                  "displayName": "Also Send to Channel",
                  "name": "reply_broadcast",
                  "type": "boolean",
                  "default": false,
                  "description": "Whether the reply should be made visible to everyone in the channel or conversation"
                }
              ]
            }
          ]
        },
        {
          "displayName": "Use Markdown?",
          "name": "mrkdwn",
          "type": "boolean",
          "default": true,
          "description": "Whether to use Slack Markdown to format the message"
        },
        {
          "displayName": "Unfurl Links",
          "name": "unfurl_links",
          "type": "boolean",
          "default": false,
          "description": "Whether to enable unfurling of primarily text-based content"
        },
        {
          "displayName": "Unfurl Media",
          "name": "unfurl_media",
          "type": "boolean",
          "default": true,
          "description": "Whether to disable unfurling of media content"
        },
        {
          "displayName": "Send as Ephemeral Message",
          "name": "ephemeral",
          "type": "fixedCollection",
          "default": {},
          "displayOptions": {
            "show": {
              "/select": [
                "channel"
              ]
            }
          },
          "placeholder": "Send as Ephemeral Message",
          "description": "Whether to send a temporary, ephemeral message",
          "options": [
            {
              "displayName": "Send as Ephemeral Message",
              "name": "ephemeralValues",
              "values": [
                {
                  "displayName": "User to Send",
                  "name": "user",
                  "type": "resourceLocator",
                  "default": {
                    "mode": "list",
                    "value": ""
                  },
                  "placeholder": "Select a user...",
                  "modes": [
                    {
                      "displayName": "From List",
                      "name": "list",
                      "type": "list",
                      "placeholder": "Select a user...",
                      "typeOptions": {
                        "searchListMethod": "getUsers",
                        "searchable": true
                      }
                    },
                    {
                      "displayName": "By ID",
                      "name": "id",
                      "type": "string",
                      "validation": [
                        {
                          "type": "regex",
                          "properties": {
                            "regex": "[a-zA-Z0-9]{2,}",
                            "errorMessage": "Not a valid Slack User ID"
                          }
                        }
                      ],
                      "placeholder": "U123AB45JGM"
                    }
                  ]
                },
                {
                  "displayName": "Send as Ephemeral Message",
                  "name": "ephemeral",
                  "type": "boolean",
                  "default": true,
                  "description": "Whether to send a temporary, ephemeral message"
                }
              ]
            }
          ]
        },
        {
          "displayName": "Send as Ephemeral Message",
          "name": "ephemeral",
          "type": "boolean",
          "displayOptions": {
            "show": {
              "/select": [
                "user"
              ]
            }
          },
          "default": true,
          "description": "Whether to send a temporary, ephemeral message"
        },
        {
          "displayName": "Send as User",
          "name": "sendAsUser",
          "type": "string",
          "displayOptions": {
            "show": {
              "/authentication": [
                "accessToken"
              ]
            }
          },
          "default": "",
          "description": "The message will be sent from this username (i.e. as if this individual sent the message). Add chat:write.customize scope on Slack API"
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "post",
            "schedule"
          ],
          "resource": [
            "message"
          ]
        }
      }
    },
    {
      "displayName": "Channel",
      "name": "channelId",
      "type": "resourceLocator",
      "default": {
        "mode": "list",
        "value": ""
      },
      "description": "The channel the scheduled message was sent to",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "message"
          ],
          "operation": [
            "deleteScheduled"
          ]
        }
      },
      "modes": [
        {
          "displayName": "From List",
          "name": "list",
          "type": "list",
          "placeholder": "Select a channel...",
          "typeOptions": {
            "searchListMethod": "getChannels",
            "searchable": true,
            "slowLoadNotice": {
              "message": "If loading is slow, try selecting a channel using \"By ID\" or \"By URL\"",
              "timeout": 15000
            }
          }
        },
        {
          "displayName": "By ID",
          "name": "id",
          "type": "string",
          "validation": [
            {
              "type": "regex",
              "properties": {
                "regex": "[a-zA-Z0-9]{2,}",
                "errorMessage": "Not a valid Slack Channel ID"
              }
            }
          ],
          "placeholder": "C0122KQ70S7E"
        },
        {
          "displayName": "By URL",
          "name": "url",
          "type": "string",
          "placeholder": "https://app.slack.com/client/TS9594PZK/B0556F47Z3A",
          "validation": [
            {
              "type": "regex",
              "properties": {
                "regex": "http(s)?://app.slack.com/client/.*/([a-zA-Z0-9]{2,})",
                "errorMessage": "Not a valid Slack Channel URL"
              }
            }
          ],
          "extractValue": {
            "type": "regex",
            "regex": "https://app.slack.com/client/.*/([a-zA-Z0-9]{2,})"
          }
        }
      ]
    },
    {
      "displayName": "Scheduled Message ID",
      "name": "scheduledMessageId",
      "type": "string",
      "default": "",
      "description": "The ID returned when the message was originally scheduled",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "message"
          ],
          "operation": [
            "deleteScheduled"
          ]
        }
      }
    },
    {
      "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": [
            "message"
          ],
          "operation": [
            "getManyScheduled"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 50,
      "description": "Max number of results to return",
      "displayOptions": {
        "show": {
          "resource": [
            "message"
          ],
          "operation": [
            "getManyScheduled"
          ],
          "returnAll": [
            false
          ]
        }
      },
      "typeOptions": {
        "minValue": 1,
        "maxValue": 100
      }
    },
    {
      "displayName": "Filters",
      "name": "filters",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Channel",
          "name": "channelId",
          "type": "resourceLocator",
          "default": {
            "mode": "list",
            "value": ""
          },
          "placeholder": "Select a channel...",
          "modes": [
            {
              "displayName": "From List",
              "name": "list",
              "type": "list",
              "placeholder": "Select a channel...",
              "typeOptions": {
                "searchListMethod": "getChannels",
                "searchable": true,
                "slowLoadNotice": {
                  "message": "If loading is slow, try selecting a channel using \"By ID\" or \"By URL\"",
                  "timeout": 15000
                }
              }
            },
            {
              "displayName": "By ID",
              "name": "id",
              "type": "string",
              "validation": [
                {
                  "type": "regex",
                  "properties": {
                    "regex": "[a-zA-Z0-9]{2,}",
                    "errorMessage": "Not a valid Slack Channel ID"
                  }
                }
              ],
              "placeholder": "C0122KQ70S7E"
            },
            {
              "displayName": "By URL",
              "name": "url",
              "type": "string",
              "placeholder": "https://app.slack.com/client/TS9594PZK/B0556F47Z3A",
              "validation": [
                {
                  "type": "regex",
                  "properties": {
                    "regex": "http(s)?://app.slack.com/client/.*/([a-zA-Z0-9]{2,})",
                    "errorMessage": "Not a valid Slack Channel URL"
                  }
                }
              ],
              "extractValue": {
                "type": "regex",
                "regex": "https://app.slack.com/client/.*/([a-zA-Z0-9]{2,})"
              }
            }
          ],
          "description": "Only show scheduled messages in this channel"
        },
        {
          "displayName": "Latest",
          "name": "latest",
          "type": "dateTime",
          "default": "",
          "description": "A point in time before which scheduled messages should be returned"
        },
        {
          "displayName": "Oldest",
          "name": "oldest",
          "type": "dateTime",
          "default": "",
          "description": "A point in time after which scheduled messages should be returned"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "message"
          ],
          "operation": [
            "getManyScheduled"
          ]
        }
      }
    },
    {
      "displayName": "Channel",
      "name": "channelId",
      "type": "resourceLocator",
      "default": {
        "mode": "list",
        "value": ""
      },
      "description": "The Slack channel to update the message from",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "message"
          ],
          "operation": [
            "update"
          ]
        }
      },
      "modes": [
        {
          "displayName": "From List",
          "name": "list",
          "type": "list",
          "placeholder": "Select a channel...",
          "typeOptions": {
            "searchListMethod": "getChannels",
            "searchable": true,
            "slowLoadNotice": {
              "message": "If loading is slow, try selecting a channel using \"By ID\" or \"By URL\"",
              "timeout": 15000
            }
          }
        },
        {
          "displayName": "By ID",
          "name": "id",
          "type": "string",
          "validation": [
            {
              "type": "regex",
              "properties": {
                "regex": "[a-zA-Z0-9]{2,}",
                "errorMessage": "Not a valid Slack Channel ID"
              }
            }
          ],
          "placeholder": "C0122KQ70S7E"
        },
        {
          "displayName": "By URL",
          "name": "url",
          "type": "string",
          "placeholder": "https://app.slack.com/client/TS9594PZK/B0556F47Z3A",
          "validation": [
            {
              "type": "regex",
              "properties": {
                "regex": "http(s)?://app.slack.com/client/.*/([a-zA-Z0-9]{2,})",
                "errorMessage": "Not a valid Slack Channel URL"
              }
            }
          ],
          "extractValue": {
            "type": "regex",
            "regex": "https://app.slack.com/client/.*/([a-zA-Z0-9]{2,})"
          }
        }
      ]
    },
    {
      "displayName": "Message Timestamp",
      "name": "ts",
      "type": "number",
      "description": "Timestamp of the message to update",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "message"
          ],
          "operation": [
            "update"
          ]
        }
      }
    },
    {
      "displayName": "Message Type",
      "name": "messageType",
      "type": "options",
      "default": "text",
      "description": "Whether to send a simple text message, or use Slack’s Blocks UI builder for more sophisticated messages that include form fields, sections and more",
      "options": [
        {
          "name": "Simple Text Message",
          "value": "text",
          "description": "Supports basic Markdown"
        },
        {
          "name": "Blocks",
          "value": "block",
          "description": "Combine text, buttons, form elements, dividers and more in Slack 's visual builder"
        },
        {
          "name": "Attachments",
          "value": "attachment"
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "update"
          ],
          "resource": [
            "message"
          ]
        }
      }
    },
    {
      "displayName": "Blocks",
      "name": "blocksUi",
      "type": "string",
      "default": "",
      "description": "Enter the JSON output from Slack's visual Block Kit Builder here. You can then use expressions to add variable content to your blocks. To create blocks, use <a target='_blank' href='https://app.slack.com/block-kit-builder'>Slack's Block Kit Builder</a>",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "update"
          ],
          "resource": [
            "message"
          ],
          "messageType": [
            "block"
          ]
        }
      },
      "typeOptions": {
        "rows": 3
      }
    },
    {
      "displayName": "Notification Text",
      "name": "text",
      "type": "string",
      "default": "",
      "description": "Fallback text to display in slack notifications. Supports <a href=\"https://api.slack.com/reference/surfaces/formatting\">markdown</a> by default - this can be disabled in \"Options\".",
      "displayOptions": {
        "show": {
          "operation": [
            "update"
          ],
          "resource": [
            "message"
          ],
          "messageType": [
            "block"
          ]
        }
      }
    },
    {
      "displayName": "Message Text",
      "name": "text",
      "type": "string",
      "default": "",
      "description": "The message text to update. Supports <a href=\"https://api.slack.com/reference/surfaces/formatting/\">markdown</a> by default - this can be disabled in \"Options\".",
      "displayOptions": {
        "show": {
          "resource": [
            "message"
          ],
          "operation": [
            "update"
          ],
          "messageType": [
            "text"
          ]
        }
      }
    },
    {
      "displayName": "Update Fields",
      "name": "updateFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Link User and Channel Names",
          "name": "link_names",
          "type": "boolean",
          "default": false,
          "description": "Whether to find and link channel names and usernames"
        },
        {
          "displayName": "Parse",
          "name": "parse",
          "type": "options",
          "options": [
            {
              "name": "Client",
              "value": "client"
            },
            {
              "name": "Full",
              "value": "full"
            },
            {
              "name": "None",
              "value": "none"
            }
          ],
          "default": "client",
          "description": "Change how messages are treated"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "message"
          ],
          "operation": [
            "update"
          ]
        }
      }
    },
    {
      "displayName": "Options",
      "name": "otherOptions",
      "type": "collection",
      "default": {},
      "description": "Other options to set",
      "options": [
        {
          "displayName": "Include Link to Workflow",
          "name": "includeLinkToWorkflow",
          "type": "boolean",
          "default": true,
          "description": "Whether to append a link to this workflow at the end of the message. This is helpful if you have many workflows sending Slack messages."
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "update"
          ],
          "resource": [
            "message"
          ]
        }
      }
    },
    {
      "displayName": "Delete Message From",
      "name": "select",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Channel",
          "value": "channel"
        },
        {
          "name": "User",
          "value": "user"
        }
      ],
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "message"
          ],
          "operation": [
            "delete"
          ]
        }
      }
    },
    {
      "displayName": "Channel",
      "name": "channelId",
      "type": "resourceLocator",
      "default": {
        "mode": "list",
        "value": ""
      },
      "description": "The Slack channel to delete the message from",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "delete"
          ],
          "resource": [
            "message"
          ],
          "select": [
            "channel"
          ]
        }
      },
      "modes": [
        {
          "displayName": "From List",
          "name": "list",
          "type": "list",
          "placeholder": "Select a channel...",
          "typeOptions": {
            "searchListMethod": "getChannels",
            "searchable": true,
            "slowLoadNotice": {
              "message": "If loading is slow, try selecting a channel using \"By ID\" or \"By URL\"",
              "timeout": 15000
            }
          }
        },
        {
          "displayName": "By ID",
          "name": "id",
          "type": "string",
          "validation": [
            {
              "type": "regex",
              "properties": {
                "regex": "[a-zA-Z0-9]{2,}",
                "errorMessage": "Not a valid Slack Channel ID"
              }
            }
          ],
          "placeholder": "C0122KQ70S7E"
        },
        {
          "displayName": "By URL",
          "name": "url",
          "type": "string",
          "placeholder": "https://app.slack.com/client/TS9594PZK/B0556F47Z3A",
          "validation": [
            {
              "type": "regex",
              "properties": {
                "regex": "http(s)?://app.slack.com/client/.*/([a-zA-Z0-9]{2,})",
                "errorMessage": "Not a valid Slack Channel URL"
              }
            }
          ],
          "extractValue": {
            "type": "regex",
            "regex": "https://app.slack.com/client/.*/([a-zA-Z0-9]{2,})"
          }
        }
      ]
    },
    {
      "displayName": "User",
      "name": "user",
      "type": "resourceLocator",
      "default": {
        "mode": "list",
        "value": ""
      },
      "displayOptions": {
        "show": {
          "operation": [
            "delete"
          ],
          "resource": [
            "message"
          ],
          "select": [
            "user"
          ]
        }
      },
      "modes": [
        {
          "displayName": "From List",
          "name": "list",
          "type": "list",
          "placeholder": "Select a user...",
          "typeOptions": {
            "searchListMethod": "getUsers",
            "searchable": true
          }
        },
        {
          "displayName": "By ID",
          "name": "id",
          "type": "string",
          "validation": [
            {
              "type": "regex",
              "properties": {
                "regex": "[a-zA-Z0-9]{2,}",
                "errorMessage": "Not a valid Slack User ID"
              }
            }
          ],
          "placeholder": "U123AB45JGM"
        }
      ]
    },
    {
      "displayName": "Message Timestamp",
      "name": "timestamp",
      "type": "number",
      "description": "Timestamp of the message to delete",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "message"
          ],
          "operation": [
            "delete"
          ]
        }
      }
    },
    {
      "displayName": "Search Query",
      "name": "query",
      "type": "string",
      "default": "",
      "description": "The text to search for within messages",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "message"
          ],
          "operation": [
            "search"
          ]
        }
      }
    },
    {
      "displayName": "Sort By",
      "name": "sort",
      "type": "options",
      "default": "desc",
      "description": "How search results should be sorted. You can sort by.",
      "options": [
        {
          "name": "Newest",
          "value": "desc"
        },
        {
          "name": "Oldest",
          "value": "asc"
        },
        {
          "name": "Relevance Score",
          "value": "relevance"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "message"
          ],
          "operation": [
            "search"
          ]
        }
      }
    },
    {
      "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": [
            "message"
          ],
          "operation": [
            "search"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 25,
      "description": "Max number of results to return",
      "displayOptions": {
        "show": {
          "resource": [
            "message"
          ],
          "operation": [
            "search"
          ],
          "returnAll": [
            false
          ]
        }
      },
      "typeOptions": {
        "minValue": 1,
        "maxValue": 50
      }
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Search in Channel",
          "name": "searchChannel",
          "type": "multiOptions",
          "description": "Choose from the list, or specify IDs using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>",
          "default": [],
          "typeOptions": {
            "loadOptionsMethod": "getChannelsName"
          }
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "message"
          ],
          "operation": [
            "search"
          ]
        }
      }
    },
    {
      "displayName": "Send Message To",
      "name": "select",
      "type": "options",
      "default": "user",
      "options": [
        {
          "name": "Channel",
          "value": "channel"
        },
        {
          "name": "User",
          "value": "user"
        }
      ],
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "message"
          ],
          "operation": [
            "sendAndWait"
          ]
        }
      }
    },
    {
      "displayName": "Channel",
      "name": "channelId",
      "type": "resourceLocator",
      "default": {
        "mode": "list",
        "value": ""
      },
      "description": "The Slack channel to send to",
      "required": true,
      "displayOptions": {
        "show": {
          "select": [
            "channel"
          ],
          "resource": [
            "message"
          ],
          "operation": [
            "sendAndWait"
          ]
        }
      },
      "modes": [
        {
          "displayName": "From List",
          "name": "list",
          "type": "list",
          "placeholder": "Select a channel...",
          "typeOptions": {
            "searchListMethod": "getChannels",
            "searchable": true
          }
        },
        {
          "displayName": "By ID",
          "name": "id",
          "type": "string",
          "validation": [
            {
              "type": "regex",
              "properties": {
                "regex": "^(?:[CGD][A-Z0-9]{2,}|#?[a-z0-9_\\-]{2,})$",
                "errorMessage": "Not a valid Slack Channel ID or name"
              }
            }
          ],
          "placeholder": "C0122KQ70S7E"
        },
        {
          "displayName": "By Name",
          "name": "name",
          "type": "string",
          "placeholder": "#general"
        },
        {
          "displayName": "By URL",
          "name": "url",
          "type": "string",
          "placeholder": "https://app.slack.com/client/TS9594PZK/B0556F47Z3A",
          "validation": [
            {
              "type": "regex",
              "properties": {
                "regex": "http(s)?://app.slack.com/client/.*/([a-zA-Z0-9]{2,})",
                "errorMessage": "Not a valid Slack Channel URL"
              }
            }
          ],
          "extractValue": {
            "type": "regex",
            "regex": "https://app.slack.com/client/.*/([a-zA-Z0-9]{2,})"
          }
        }
      ]
    },
    {
      "displayName": "User",
      "name": "user",
      "type": "resourceLocator",
      "default": {
        "mode": "list",
        "value": ""
      },
      "displayOptions": {
        "show": {
          "select": [
            "user"
          ],
          "resource": [
            "message"
          ],
          "operation": [
            "sendAndWait"
          ]
        }
      },
      "modes": [
        {
          "displayName": "From List",
          "name": "list",
          "type": "list",
          "placeholder": "Select a user...",
          "typeOptions": {
            "searchListMethod": "getUsers",
            "searchable": true
          }
        },
        {
          "displayName": "By ID",
          "name": "id",
          "type": "string",
          "validation": [
            {
              "type": "regex",
              "properties": {
                "regex": "[a-zA-Z0-9]{2,}",
                "errorMessage": "Not a valid Slack User ID"
              }
            }
          ],
          "placeholder": "U123AB45JGM"
        },
        {
          "displayName": "By username",
          "name": "username",
          "type": "string",
          "placeholder": "@username"
        }
      ]
    },
    {
      "displayName": "Message",
      "name": "message",
      "type": "string",
      "default": "",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "message"
          ],
          "operation": [
            "sendAndWait"
          ]
        }
      },
      "typeOptions": {
        "rows": 4
      }
    },
    {
      "displayName": "Response Type",
      "name": "responseType",
      "type": "options",
      "default": "approval",
      "options": [
        {
          "name": "Approval",
          "value": "approval",
          "description": "User can approve/disapprove from within the message"
        },
        {
          "name": "Free Text",
          "value": "freeText",
          "description": "User can submit a response via a form"
        },
        {
          "name": "Custom Form",
          "value": "customForm",
          "description": "User can submit a response via a custom form"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "message"
          ],
          "operation": [
            "sendAndWait"
          ]
        }
      }
    },
    {
      "displayName": "Define Form",
      "name": "defineForm",
      "type": "options",
      "default": "fields",
      "options": [
        {
          "name": "Using Fields Below",
          "value": "fields"
        },
        {
          "name": "Using JSON",
          "value": "json"
        }
      ],
      "displayOptions": {
        "show": {
          "responseType": [
            "customForm"
          ],
          "resource": [
            "message"
          ],
          "operation": [
            "sendAndWait"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Form Fields",
      "name": "jsonOutput",
      "type": "json",
      "default": "[\n  {\n    \"fieldLabel\": \"Name\",\n    \"placeholder\": \"enter your name\",\n    \"requiredField\": true\n  },\n  {\n    \"fieldLabel\": \"Age\",\n    \"fieldType\": \"number\",\n    \"placeholder\": \"enter your age\"\n  },\n  {\n    \"fieldLabel\": \"Email\",\n    \"fieldType\": \"email\",\n    \"requiredField\": true\n  },\n  {\n    \"fieldLabel\": \"Textarea\",\n    \"fieldType\": \"textarea\"\n  },\n  {\n    \"fieldLabel\": \"Dropdown Options\",\n    \"fieldType\": \"dropdown\",\n    \"fieldOptions\": {\n      \"values\": [\n        {\n          \"option\": \"option 1\"\n        },\n        {\n          \"option\": \"option 2\"\n        }\n      ]\n    },\n    \"requiredField\": true\n  },\n  {\n    \"fieldLabel\": \"Checkboxes\",\n    \"fieldType\": \"checkbox\",\n    \"fieldOptions\": {\n      \"values\": [\n        {\n          \"option\": \"option 1\"\n        },\n        {\n          \"option\": \"option 2\"\n        }\n      ]\n    }\n  },\n  {\n    \"fieldLabel\": \"Radio\",\n    \"fieldType\": \"radio\",\n    \"fieldOptions\": {\n      \"values\": [\n        {\n          \"option\": \"option 1\"\n        },\n        {\n          \"option\": \"option 2\"\n        }\n      ]\n    }\n  },\n  {\n    \"fieldLabel\": \"Email\",\n    \"fieldType\": \"email\",\n    \"placeholder\": \"me@mail.con\"\n  },\n  {\n    \"fieldLabel\": \"File\",\n    \"fieldType\": \"file\",\n    \"multipleFiles\": true,\n    \"acceptFileTypes\": \".jpg, .png\"\n  },\n  {\n    \"fieldLabel\": \"Number\",\n    \"fieldType\": \"number\"\n  },\n  {\n    \"fieldLabel\": \"Password\",\n    \"fieldType\": \"password\"\n  }\n]\n",
      "displayOptions": {
        "show": {
          "defineForm": [
            "json"
          ],
          "responseType": [
            "customForm"
          ],
          "resource": [
            "message"
          ],
          "operation": [
            "sendAndWait"
          ]
        }
      },
      "typeOptions": {
        "rows": 5
      }
    },
    {
      "displayName": "Form Elements",
      "name": "formFields",
      "type": "fixedCollection",
      "default": {},
      "options": [
        {
          "displayName": "Values",
          "name": "values",
          "values": [
            {
              "displayName": "Field Name",
              "name": "fieldName",
              "description": "The name of the field, used in input attributes and referenced by the workflow",
              "required": true,
              "type": "string",
              "default": "",
              "displayOptions": {
                "hide": {
                  "fieldType": [
                    "html"
                  ]
                },
                "show": {
                  "@version": [
                    2.4
                  ]
                }
              }
            },
            {
              "displayName": "Label",
              "name": "fieldLabel",
              "type": "string",
              "default": "",
              "placeholder": "e.g. What is your name?",
              "description": "Label that appears above the input field",
              "required": true,
              "displayOptions": {
                "hide": {
                  "fieldType": [
                    "hiddenField",
                    "html"
                  ]
                },
                "show": {
                  "@version": [
                    {
                      "_cnd": {
                        "gte": 2.4
                      }
                    }
                  ]
                }
              }
            },
            {
              "displayName": "Field Name",
              "name": "fieldLabel",
              "type": "string",
              "default": "",
              "placeholder": "e.g. What is your name?",
              "description": "Label that appears above the input field",
              "required": true,
              "displayOptions": {
                "hide": {
                  "fieldType": [
                    "hiddenField",
                    "html"
                  ]
                },
                "show": {
                  "@version": [
                    {
                      "_cnd": {
                        "lt": 2.4
                      }
                    }
                  ]
                }
              }
            },
            {
              "displayName": "Field Name",
              "name": "fieldName",
              "description": "The name of the field, used in input attributes and referenced by the workflow",
              "type": "string",
              "default": "",
              "displayOptions": {
                "show": {
                  "fieldType": [
                    "hiddenField"
                  ],
                  "@version": [
                    {
                      "_cnd": {
                        "lt": 2.4
                      }
                    }
                  ]
                }
              }
            },
            {
              "displayName": "Element Type",
              "name": "fieldType",
              "type": "options",
              "default": "text",
              "description": "The type of field to add to the form",
              "options": [
                {
                  "name": "Checkboxes",
                  "value": "checkbox"
                },
                {
                  "name": "Custom HTML",
                  "value": "html"
                },
                {
                  "name": "Date",
                  "value": "date"
                },
                {
                  "name": "Dropdown",
                  "value": "dropdown"
                },
                {
                  "name": "Email",
                  "value": "email"
                },
                {
                  "name": "File",
                  "value": "file"
                },
                {
                  "name": "Hidden Field",
                  "value": "hiddenField"
                },
                {
                  "name": "Number",
                  "value": "number"
                },
                {
                  "name": "Password",
                  "value": "password"
                },
                {
                  "name": "Radio Buttons",
                  "value": "radio"
                },
                {
                  "name": "Text Input",
                  "value": "text"
                },
                {
                  "name": "Textarea",
                  "value": "textarea"
                }
              ],
              "required": true,
              "builderHint": {
                "propertyHint": "Valid values: text, number, email, textarea, dropdown, date, file, html, hiddenField, radio, checkbox, password. There is NO 'time' type — use fieldType: 'text' with placeholder 'e.g. 2:30 PM' for time-of-day inputs."
              }
            },
            {
              "displayName": "Element Name",
              "name": "elementName",
              "type": "string",
              "default": "",
              "placeholder": "e.g. content-section",
              "description": "Optional field. It can be used to include the html in the output.",
              "displayOptions": {
                "show": {
                  "fieldType": [
                    "html"
                  ]
                }
              }
            },
            {
              "displayName": "Custom Field Name",
              "name": "fieldName",
              "description": "The name of the field, used in input attributes and referenced by the workflow",
              "type": "string",
              "default": "",
              "displayOptions": {
                "hide": {
                  "fieldType": [
                    "html"
                  ]
                },
                "show": {
                  "@version": [
                    {
                      "_cnd": {
                        "gte": 2.5
                      }
                    }
                  ]
                }
              }
            },
            {
              "displayName": "Placeholder",
              "name": "placeholder",
              "description": "Sample text to display inside the field",
              "type": "string",
              "default": "",
              "displayOptions": {
                "hide": {
                  "fieldType": [
                    "dropdown",
                    "date",
                    "file",
                    "html",
                    "hiddenField",
                    "radio",
                    "checkbox"
                  ]
                }
              }
            },
            {
              "displayName": "Default Value",
              "name": "defaultValue",
              "description": "Default value that will be pre-filled in the form field",
              "type": "string",
              "default": "",
              "displayOptions": {
                "show": {
                  "fieldType": [
                    "text",
                    "number",
                    "email",
                    "textarea"
                  ]
                }
              }
            },
            {
              "displayName": "Default Value",
              "name": "defaultValue",
              "description": "Default date value that will be pre-filled in the form field (format: YYYY-MM-DD)",
              "type": "dateTime",
              "typeOptions": {
                "dateOnly": true
              },
              "default": "",
              "displayOptions": {
                "show": {
                  "fieldType": [
                    "date"
                  ]
                }
              }
            },
            {
              "displayName": "Default Value",
              "name": "defaultValue",
              "description": "Default value that will be pre-selected. Must match one of the option labels.",
              "type": "string",
              "default": "",
              "displayOptions": {
                "show": {
                  "fieldType": [
                    "dropdown",
                    "radio"
                  ]
                }
              }
            },
            {
              "displayName": "Default Value",
              "name": "defaultValue",
              "description": "Default value(s) that will be pre-selected. Must match one or multiple of the option labels. Separate multiple pre-selected options with a comma.",
              "type": "string",
              "default": "",
              "displayOptions": {
                "show": {
                  "fieldType": [
                    "checkbox"
                  ]
                }
              }
            },
            {
              "displayName": "Field Value",
              "name": "fieldValue",
              "description": "Input value can be set here or will be passed as a query parameter via Field Name if no value is set",
              "type": "string",
              "default": "",
              "displayOptions": {
                "show": {
                  "fieldType": [
                    "hiddenField"
                  ]
                }
              }
            },
            {
              "displayName": "Field Options",
              "name": "fieldOptions",
              "placeholder": "Add Field Option",
              "description": "List of options that can be selected from the dropdown",
              "type": "fixedCollection",
              "default": {
                "values": [
                  {
                    "option": ""
                  }
                ]
              },
              "required": true,
              "displayOptions": {
                "show": {
                  "fieldType": [
                    "dropdown"
                  ]
                }
              },
              "typeOptions": {
                "multipleValues": true,
                "sortable": true
              },
              "options": [
                {
                  "displayName": "Values",
                  "name": "values",
                  "values": [
                    {
                      "displayName": "Option",
                      "name": "option",
                      "type": "string",
                      "default": ""
                    }
                  ]
                }
              ]
            },
            {
              "displayName": "Checkboxes",
              "name": "fieldOptions",
              "placeholder": "Add Checkbox",
              "type": "fixedCollection",
              "default": {
                "values": [
                  {
                    "option": ""
                  }
                ]
              },
              "required": true,
              "displayOptions": {
                "show": {
                  "fieldType": [
                    "checkbox"
                  ]
                }
              },
              "typeOptions": {
                "multipleValues": true,
                "sortable": true
              },
              "options": [
                {
                  "displayName": "Values",
                  "name": "values",
                  "values": [
                    {
                      "displayName": "Checkbox Label",
                      "name": "option",
                      "type": "string",
                      "default": ""
                    }
                  ]
                }
              ]
            },
            {
              "displayName": "Radio Buttons",
              "name": "fieldOptions",
              "placeholder": "Add Radio Button",
              "type": "fixedCollection",
              "default": {
                "values": [
                  {
                    "option": ""
                  }
                ]
              },
              "required": true,
              "displayOptions": {
                "show": {
                  "fieldType": [
                    "radio"
                  ]
                }
              },
              "typeOptions": {
                "multipleValues": true,
                "sortable": true
              },
              "options": [
                {
                  "displayName": "Values",
                  "name": "values",
                  "values": [
                    {
                      "displayName": "Radio Button Label",
                      "name": "option",
                      "type": "string",
                      "default": ""
                    }
                  ]
                }
              ]
            },
            {
              "displayName": "Multiple Choice is a legacy option, please use Checkboxes or Radio Buttons field type instead",
              "name": "multiselectLegacyNotice",
              "type": "notice",
              "default": "",
              "displayOptions": {
                "show": {
                  "multiselect": [
                    true
                  ],
                  "fieldType": [
                    "dropdown"
                  ],
                  "@version": [
                    {
                      "_cnd": {
                        "lt": 2.3
                      }
                    }
                  ]
                }
              }
            },
            {
              "displayName": "Multiple Choice",
              "name": "multiselect",
              "type": "boolean",
              "default": false,
              "description": "Whether to allow the user to select multiple options from the dropdown list",
              "displayOptions": {
                "show": {
                  "fieldType": [
                    "dropdown"
                  ],
                  "@version": [
                    {
                      "_cnd": {
                        "lt": 2.3
                      }
                    }
                  ]
                }
              }
            },
            {
              "displayName": "Limit Selection",
              "name": "limitSelection",
              "type": "options",
              "default": "unlimited",
              "options": [
                {
                  "name": "Exact Number",
                  "value": "exact"
                },
                {
                  "name": "Range",
                  "value": "range"
                },
                {
                  "name": "Unlimited",
                  "value": "unlimited"
                }
              ],
              "displayOptions": {
                "show": {
                  "fieldType": [
                    "checkbox"
                  ]
                }
              }
            },
            {
              "displayName": "Number of Selections",
              "name": "numberOfSelections",
              "type": "number",
              "default": 1,
              "typeOptions": {
                "numberPrecision": 0,
                "minValue": 1,
                "showEvenWhenOptional": true
              },
              "displayOptions": {
                "show": {
                  "fieldType": [
                    "checkbox"
                  ],
                  "limitSelection": [
                    "exact"
                  ]
                }
              }
            },
            {
              "displayName": "Minimum Selections",
              "name": "minSelections",
              "type": "number",
              "default": 0,
              "typeOptions": {
                "numberPrecision": 0,
                "minValue": 0,
                "showEvenWhenOptional": true
              },
              "displayOptions": {
                "show": {
                  "fieldType": [
                    "checkbox"
                  ],
                  "limitSelection": [
                    "range"
                  ]
                }
              }
            },
            {
              "displayName": "Maximum Selections",
              "name": "maxSelections",
              "type": "number",
              "default": 1,
              "typeOptions": {
                "numberPrecision": 0,
                "minValue": 1,
                "showEvenWhenOptional": true
              },
              "displayOptions": {
                "show": {
                  "fieldType": [
                    "checkbox"
                  ],
                  "limitSelection": [
                    "range"
                  ]
                }
              }
            },
            {
              "displayName": "HTML",
              "name": "html",
              "typeOptions": {
                "editor": "htmlEditor"
              },
              "type": "string",
              "noDataExpression": true,
              "default": "<!-- Your custom HTML here --->\n\n\n",
              "description": "HTML elements to display on the form page",
              "hint": "Does not accept <code>&lt;script&gt;</code>, <code>&lt;style&gt;</code> or <code>&lt;input&gt;</code> tags",
              "displayOptions": {
                "show": {
                  "fieldType": [
                    "html"
                  ]
                }
              }
            },
            {
              "displayName": "Multiple Files",
              "name": "multipleFiles",
              "type": "boolean",
              "default": true,
              "description": "Whether to allow the user to select multiple files from the file input or just one",
              "displayOptions": {
                "show": {
                  "fieldType": [
                    "file"
                  ]
                }
              }
            },
            {
              "displayName": "Accepted File Types",
              "name": "acceptFileTypes",
              "type": "string",
              "default": "",
              "description": "Comma-separated list of allowed file extensions",
              "hint": "Leave empty to allow all file types",
              "placeholder": "e.g. .jpg, .png",
              "displayOptions": {
                "show": {
                  "fieldType": [
                    "file"
                  ]
                }
              }
            },
            {
              "displayName": "The displayed date is formatted based on the locale of the user's browser",
              "name": "formatDate",
              "type": "notice",
              "default": "",
              "displayOptions": {
                "show": {
                  "fieldType": [
                    "date"
                  ]
                }
              }
            },
            {
              "displayName": "Required Field",
              "name": "requiredField",
              "type": "boolean",
              "default": false,
              "description": "Whether to require the user to enter a value for this field before submitting the form",
              "displayOptions": {
                "hide": {
                  "fieldType": [
                    "html",
                    "hiddenField"
                  ]
                }
              }
            }
          ]
        }
      ],
      "displayOptions": {
        "show": {
          "@version": [
            {
              "_cnd": {
                "lt": 2.5
              }
            }
          ],
          "defineForm": [
            "fields"
          ],
          "responseType": [
            "customForm"
          ],
          "resource": [
            "message"
          ],
          "operation": [
            "sendAndWait"
          ]
        }
      },
      "typeOptions": {
        "multipleValues": true,
        "sortable": true,
        "fixedCollection": {
          "itemTitle": "={{ $collection.item.properties.find(p => p.name === \"fieldType\").options.find(o => o.value === $collection.item.value.fieldType).name }}"
        }
      }
    },
    {
      "displayName": "Form Elements",
      "name": "formFields",
      "type": "fixedCollection",
      "default": {},
      "options": [
        {
          "displayName": "Values",
          "name": "values",
          "values": [
            {
              "displayName": "Field Name",
              "name": "fieldName",
              "description": "The name of the field, used in input attributes and referenced by the workflow",
              "required": true,
              "type": "string",
              "default": "",
              "displayOptions": {
                "hide": {
                  "fieldType": [
                    "html"
                  ]
                },
                "show": {
                  "@version": [
                    2.4
                  ]
                }
              }
            },
            {
              "displayName": "Label",
              "name": "fieldLabel",
              "type": "string",
              "default": "",
              "placeholder": "e.g. What is your name?",
              "description": "Label that appears above the input field",
              "required": true,
              "displayOptions": {
                "hide": {
                  "fieldType": [
                    "hiddenField",
                    "html"
                  ]
                },
                "show": {
                  "@version": [
                    {
                      "_cnd": {
                        "gte": 2.4
                      }
                    }
                  ]
                }
              }
            },
            {
              "displayName": "Field Name",
              "name": "fieldLabel",
              "type": "string",
              "default": "",
              "placeholder": "e.g. What is your name?",
              "description": "Label that appears above the input field",
              "required": true,
              "displayOptions": {
                "hide": {
                  "fieldType": [
                    "hiddenField",
                    "html"
                  ]
                },
                "show": {
                  "@version": [
                    {
                      "_cnd": {
                        "lt": 2.4
                      }
                    }
                  ]
                }
              }
            },
            {
              "displayName": "Field Name",
              "name": "fieldName",
              "description": "The name of the field, used in input attributes and referenced by the workflow",
              "type": "string",
              "default": "",
              "displayOptions": {
                "show": {
                  "fieldType": [
                    "hiddenField"
                  ],
                  "@version": [
                    {
                      "_cnd": {
                        "lt": 2.4
                      }
                    }
                  ]
                }
              }
            },
            {
              "displayName": "Element Type",
              "name": "fieldType",
              "type": "options",
              "default": "text",
              "description": "The type of field to add to the form",
              "options": [
                {
                  "name": "Checkboxes",
                  "value": "checkbox"
                },
                {
                  "name": "Custom HTML",
                  "value": "html"
                },
                {
                  "name": "Date",
                  "value": "date"
                },
                {
                  "name": "Dropdown",
                  "value": "dropdown"
                },
                {
                  "name": "Email",
                  "value": "email"
                },
                {
                  "name": "File",
                  "value": "file"
                },
                {
                  "name": "Hidden Field",
                  "value": "hiddenField"
                },
                {
                  "name": "Number",
                  "value": "number"
                },
                {
                  "name": "Password",
                  "value": "password"
                },
                {
                  "name": "Radio Buttons",
                  "value": "radio"
                },
                {
                  "name": "Text Input",
                  "value": "text"
                },
                {
                  "name": "Textarea",
                  "value": "textarea"
                }
              ],
              "required": true,
              "builderHint": {
                "propertyHint": "Valid values: text, number, email, textarea, dropdown, date, file, html, hiddenField, radio, checkbox, password. There is NO 'time' type — use fieldType: 'text' with placeholder 'e.g. 2:30 PM' for time-of-day inputs."
              }
            },
            {
              "displayName": "Element Name",
              "name": "elementName",
              "type": "string",
              "default": "",
              "placeholder": "e.g. content-section",
              "description": "Optional field. It can be used to include the html in the output.",
              "displayOptions": {
                "show": {
                  "fieldType": [
                    "html"
                  ]
                }
              }
            },
            {
              "displayName": "Custom Field Name",
              "name": "fieldName",
              "description": "The name of the field, used in input attributes and referenced by the workflow",
              "type": "string",
              "default": "",
              "displayOptions": {
                "hide": {
                  "fieldType": [
                    "html"
                  ]
                },
                "show": {
                  "@version": [
                    {
                      "_cnd": {
                        "gte": 2.5
                      }
                    }
                  ]
                }
              }
            },
            {
              "displayName": "Placeholder",
              "name": "placeholder",
              "description": "Sample text to display inside the field",
              "type": "string",
              "default": "",
              "displayOptions": {
                "hide": {
                  "fieldType": [
                    "dropdown",
                    "date",
                    "file",
                    "html",
                    "hiddenField",
                    "radio",
                    "checkbox"
                  ]
                }
              }
            },
            {
              "displayName": "Default Value",
              "name": "defaultValue",
              "description": "Default value that will be pre-filled in the form field",
              "type": "string",
              "default": "",
              "displayOptions": {
                "show": {
                  "fieldType": [
                    "text",
                    "number",
                    "email",
                    "textarea"
                  ]
                }
              }
            },
            {
              "displayName": "Default Value",
              "name": "defaultValue",
              "description": "Default date value that will be pre-filled in the form field (format: YYYY-MM-DD)",
              "type": "dateTime",
              "typeOptions": {
                "dateOnly": true
              },
              "default": "",
              "displayOptions": {
                "show": {
                  "fieldType": [
                    "date"
                  ]
                }
              }
            },
            {
              "displayName": "Default Value",
              "name": "defaultValue",
              "description": "Default value that will be pre-selected. Must match one of the option labels.",
              "type": "string",
              "default": "",
              "displayOptions": {
                "show": {
                  "fieldType": [
                    "dropdown",
                    "radio"
                  ]
                }
              }
            },
            {
              "displayName": "Default Value",
              "name": "defaultValue",
              "description": "Default value(s) that will be pre-selected. Must match one or multiple of the option labels. Separate multiple pre-selected options with a comma.",
              "type": "string",
              "default": "",
              "displayOptions": {
                "show": {
                  "fieldType": [
                    "checkbox"
                  ]
                }
              }
            },
            {
              "displayName": "Field Value",
              "name": "fieldValue",
              "description": "Input value can be set here or will be passed as a query parameter via Field Name if no value is set",
              "type": "string",
              "default": "",
              "displayOptions": {
                "show": {
                  "fieldType": [
                    "hiddenField"
                  ]
                }
              }
            },
            {
              "displayName": "Field Options",
              "name": "fieldOptions",
              "placeholder": "Add Field Option",
              "description": "List of options that can be selected from the dropdown",
              "type": "fixedCollection",
              "default": {
                "values": [
                  {
                    "option": ""
                  }
                ]
              },
              "required": true,
              "displayOptions": {
                "show": {
                  "fieldType": [
                    "dropdown"
                  ]
                }
              },
              "typeOptions": {
                "multipleValues": true,
                "sortable": true
              },
              "options": [
                {
                  "displayName": "Values",
                  "name": "values",
                  "values": [
                    {
                      "displayName": "Option",
                      "name": "option",
                      "type": "string",
                      "default": ""
                    }
                  ]
                }
              ]
            },
            {
              "displayName": "Checkboxes",
              "name": "fieldOptions",
              "placeholder": "Add Checkbox",
              "type": "fixedCollection",
              "default": {
                "values": [
                  {
                    "option": ""
                  }
                ]
              },
              "required": true,
              "displayOptions": {
                "show": {
                  "fieldType": [
                    "checkbox"
                  ]
                }
              },
              "typeOptions": {
                "multipleValues": true,
                "sortable": true
              },
              "options": [
                {
                  "displayName": "Values",
                  "name": "values",
                  "values": [
                    {
                      "displayName": "Checkbox Label",
                      "name": "option",
                      "type": "string",
                      "default": ""
                    }
                  ]
                }
              ]
            },
            {
              "displayName": "Radio Buttons",
              "name": "fieldOptions",
              "placeholder": "Add Radio Button",
              "type": "fixedCollection",
              "default": {
                "values": [
                  {
                    "option": ""
                  }
                ]
              },
              "required": true,
              "displayOptions": {
                "show": {
                  "fieldType": [
                    "radio"
                  ]
                }
              },
              "typeOptions": {
                "multipleValues": true,
                "sortable": true
              },
              "options": [
                {
                  "displayName": "Values",
                  "name": "values",
                  "values": [
                    {
                      "displayName": "Radio Button Label",
                      "name": "option",
                      "type": "string",
                      "default": ""
                    }
                  ]
                }
              ]
            },
            {
              "displayName": "Multiple Choice is a legacy option, please use Checkboxes or Radio Buttons field type instead",
              "name": "multiselectLegacyNotice",
              "type": "notice",
              "default": "",
              "displayOptions": {
                "show": {
                  "multiselect": [
                    true
                  ],
                  "fieldType": [
                    "dropdown"
                  ],
                  "@version": [
                    {
                      "_cnd": {
                        "lt": 2.3
                      }
                    }
                  ]
                }
              }
            },
            {
              "displayName": "Multiple Choice",
              "name": "multiselect",
              "type": "boolean",
              "default": false,
              "description": "Whether to allow the user to select multiple options from the dropdown list",
              "displayOptions": {
                "show": {
                  "fieldType": [
                    "dropdown"
                  ],
                  "@version": [
                    {
                      "_cnd": {
                        "lt": 2.3
                      }
                    }
                  ]
                }
              }
            },
            {
              "displayName": "Limit Selection",
              "name": "limitSelection",
              "type": "options",
              "default": "unlimited",
              "options": [
                {
                  "name": "Exact Number",
                  "value": "exact"
                },
                {
                  "name": "Range",
                  "value": "range"
                },
                {
                  "name": "Unlimited",
                  "value": "unlimited"
                }
              ],
              "displayOptions": {
                "show": {
                  "fieldType": [
                    "checkbox"
                  ]
                }
              }
            },
            {
              "displayName": "Number of Selections",
              "name": "numberOfSelections",
              "type": "number",
              "default": 1,
              "typeOptions": {
                "numberPrecision": 0,
                "minValue": 1,
                "showEvenWhenOptional": true
              },
              "displayOptions": {
                "show": {
                  "fieldType": [
                    "checkbox"
                  ],
                  "limitSelection": [
                    "exact"
                  ]
                }
              }
            },
            {
              "displayName": "Minimum Selections",
              "name": "minSelections",
              "type": "number",
              "default": 0,
              "typeOptions": {
                "numberPrecision": 0,
                "minValue": 0,
                "showEvenWhenOptional": true
              },
              "displayOptions": {
                "show": {
                  "fieldType": [
                    "checkbox"
                  ],
                  "limitSelection": [
                    "range"
                  ]
                }
              }
            },
            {
              "displayName": "Maximum Selections",
              "name": "maxSelections",
              "type": "number",
              "default": 1,
              "typeOptions": {
                "numberPrecision": 0,
                "minValue": 1,
                "showEvenWhenOptional": true
              },
              "displayOptions": {
                "show": {
                  "fieldType": [
                    "checkbox"
                  ],
                  "limitSelection": [
                    "range"
                  ]
                }
              }
            },
            {
              "displayName": "HTML",
              "name": "html",
              "typeOptions": {
                "editor": "htmlEditor"
              },
              "type": "string",
              "noDataExpression": true,
              "default": "<!-- Your custom HTML here --->\n\n\n",
              "description": "HTML elements to display on the form page",
              "hint": "Does not accept <code>&lt;script&gt;</code>, <code>&lt;style&gt;</code> or <code>&lt;input&gt;</code> tags",
              "displayOptions": {
                "show": {
                  "fieldType": [
                    "html"
                  ]
                }
              }
            },
            {
              "displayName": "Multiple Files",
              "name": "multipleFiles",
              "type": "boolean",
              "default": true,
              "description": "Whether to allow the user to select multiple files from the file input or just one",
              "displayOptions": {
                "show": {
                  "fieldType": [
                    "file"
                  ]
                }
              }
            },
            {
              "displayName": "Accepted File Types",
              "name": "acceptFileTypes",
              "type": "string",
              "default": "",
              "description": "Comma-separated list of allowed file extensions",
              "hint": "Leave empty to allow all file types",
              "placeholder": "e.g. .jpg, .png",
              "displayOptions": {
                "show": {
                  "fieldType": [
                    "file"
                  ]
                }
              }
            },
            {
              "displayName": "The displayed date is formatted based on the locale of the user's browser",
              "name": "formatDate",
              "type": "notice",
              "default": "",
              "displayOptions": {
                "show": {
                  "fieldType": [
                    "date"
                  ]
                }
              }
            },
            {
              "displayName": "Required Field",
              "name": "requiredField",
              "type": "boolean",
              "default": false,
              "description": "Whether to require the user to enter a value for this field before submitting the form",
              "displayOptions": {
                "hide": {
                  "fieldType": [
                    "html",
                    "hiddenField"
                  ]
                }
              }
            }
          ]
        }
      ],
      "displayOptions": {
        "show": {
          "@version": [
            {
              "_cnd": {
                "gte": 2.5
              }
            }
          ],
          "defineForm": [
            "fields"
          ],
          "responseType": [
            "customForm"
          ],
          "resource": [
            "message"
          ],
          "operation": [
            "sendAndWait"
          ]
        }
      },
      "typeOptions": {
        "multipleValues": true,
        "sortable": true,
        "hideOptionalFields": true,
        "addOptionalFieldButtonText": "Add Attributes",
        "fixedCollection": {
          "itemTitle": "={{ $collection.item.properties.find(p => p.name === \"fieldType\").options.find(o => o.value === $collection.item.value.fieldType).name }}"
        }
      }
    },
    {
      "displayName": "Approval Options",
      "name": "approvalOptions",
      "type": "fixedCollection",
      "default": {},
      "options": [
        {
          "displayName": "Values",
          "name": "values",
          "values": [
            {
              "displayName": "Type of Approval",
              "name": "approvalType",
              "type": "options",
              "placeholder": "Add option",
              "default": "single",
              "options": [
                {
                  "name": "Approve Only",
                  "value": "single"
                },
                {
                  "name": "Approve and Disapprove",
                  "value": "double"
                }
              ]
            },
            {
              "displayName": "Approve Button Label",
              "name": "approveLabel",
              "type": "string",
              "default": "Approve",
              "displayOptions": {
                "show": {
                  "approvalType": [
                    "single",
                    "double"
                  ]
                }
              }
            },
            {
              "displayName": "Approve Button Style",
              "name": "buttonApprovalStyle",
              "type": "options",
              "default": "primary",
              "options": [
                {
                  "name": "Primary",
                  "value": "primary"
                },
                {
                  "name": "Secondary",
                  "value": "secondary"
                }
              ],
              "displayOptions": {
                "show": {
                  "approvalType": [
                    "single",
                    "double"
                  ]
                }
              }
            },
            {
              "displayName": "Disapprove Button Label",
              "name": "disapproveLabel",
              "type": "string",
              "default": "Decline",
              "displayOptions": {
                "show": {
                  "approvalType": [
                    "double"
                  ]
                }
              }
            },
            {
              "displayName": "Disapprove Button Style",
              "name": "buttonDisapprovalStyle",
              "type": "options",
              "default": "secondary",
              "options": [
                {
                  "name": "Primary",
                  "value": "primary"
                },
                {
                  "name": "Secondary",
                  "value": "secondary"
                }
              ],
              "displayOptions": {
                "show": {
                  "approvalType": [
                    "double"
                  ]
                }
              }
            }
          ]
        }
      ],
      "displayOptions": {
        "show": {
          "responseType": [
            "approval"
          ],
          "resource": [
            "message"
          ],
          "operation": [
            "sendAndWait"
          ]
        }
      }
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Limit Wait Time",
          "name": "limitWaitTime",
          "type": "fixedCollection",
          "description": "Whether to limit the time this node should wait for a user response before execution resumes",
          "default": {
            "values": {
              "limitType": "afterTimeInterval",
              "resumeAmount": 45,
              "resumeUnit": "minutes"
            }
          },
          "options": [
            {
              "displayName": "Values",
              "name": "values",
              "values": [
                {
                  "displayName": "Limit Type",
                  "name": "limitType",
                  "type": "options",
                  "default": "afterTimeInterval",
                  "description": "Sets the condition for the execution to resume. Can be a specified date or after some time.",
                  "options": [
                    {
                      "name": "After Time Interval",
                      "description": "Waits for a certain amount of time",
                      "value": "afterTimeInterval"
                    },
                    {
                      "name": "At Specified Time",
                      "description": "Waits until the set date and time to continue",
                      "value": "atSpecifiedTime"
                    }
                  ]
                },
                {
                  "displayName": "Amount",
                  "name": "resumeAmount",
                  "type": "number",
                  "displayOptions": {
                    "show": {
                      "limitType": [
                        "afterTimeInterval"
                      ]
                    }
                  },
                  "typeOptions": {
                    "minValue": 0,
                    "numberPrecision": 2
                  },
                  "default": 1,
                  "description": "The time to wait"
                },
                {
                  "displayName": "Unit",
                  "name": "resumeUnit",
                  "type": "options",
                  "displayOptions": {
                    "show": {
                      "limitType": [
                        "afterTimeInterval"
                      ]
                    }
                  },
                  "options": [
                    {
                      "name": "Minutes",
                      "value": "minutes"
                    },
                    {
                      "name": "Hours",
                      "value": "hours"
                    },
                    {
                      "name": "Days",
                      "value": "days"
                    }
                  ],
                  "default": "hours",
                  "description": "Unit of the interval value"
                },
                {
                  "displayName": "Max Date and Time",
                  "name": "maxDateAndTime",
                  "type": "dateTime",
                  "displayOptions": {
                    "show": {
                      "limitType": [
                        "atSpecifiedTime"
                      ]
                    }
                  },
                  "default": "",
                  "description": "Continue execution after the specified date and time"
                }
              ]
            }
          ]
        },
        {
          "displayName": "Append n8n Attribution",
          "name": "appendAttribution",
          "type": "boolean",
          "default": true,
          "description": "Whether to include the phrase \"This message was sent automatically with n8n\" to the end of the message"
        },
        {
          "displayName": "Reply to a Message",
          "name": "thread_ts",
          "type": "fixedCollection",
          "default": {},
          "placeholder": "Reply to a Message",
          "description": "Provide another message's Timestamp value to make this message a reply",
          "options": [
            {
              "displayName": "Reply to a Message",
              "name": "replyValues",
              "values": [
                {
                  "displayName": "Message Timestamp to Reply To",
                  "name": "thread_ts",
                  "type": "number",
                  "placeholder": "1663233118.856619",
                  "description": "Message timestamps are included in output data of Slack nodes, abbreviated to ts"
                },
                {
                  "displayName": "Also Send to Channel",
                  "name": "reply_broadcast",
                  "type": "boolean",
                  "default": false,
                  "description": "Whether the reply should be made visible to everyone in the channel or conversation"
                }
              ]
            }
          ]
        }
      ],
      "displayOptions": {
        "show": {
          "responseType": [
            "approval"
          ],
          "resource": [
            "message"
          ],
          "operation": [
            "sendAndWait"
          ]
        }
      }
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Message Button Label",
          "name": "messageButtonLabel",
          "type": "string",
          "default": "Respond"
        },
        {
          "displayName": "Response Form Title",
          "name": "responseFormTitle",
          "description": "Title of the form that the user can access to provide their response",
          "type": "string",
          "default": ""
        },
        {
          "displayName": "Response Form Description",
          "name": "responseFormDescription",
          "description": "Description of the form that the user can access to provide their response",
          "type": "string",
          "default": ""
        },
        {
          "displayName": "Response Form Button Label",
          "name": "responseFormButtonLabel",
          "type": "string",
          "default": "Submit"
        },
        {
          "displayName": "Response Form Custom Styling",
          "name": "responseFormCustomCss",
          "type": "string",
          "typeOptions": {
            "rows": 10,
            "editor": "cssEditor"
          },
          "default": ":root {\n\t--font-family: 'Open Sans', sans-serif;\n\t--font-weight-normal: 400;\n\t--font-weight-bold: 600;\n\t--font-size-body: 12px;\n\t--font-size-label: 14px;\n\t--font-size-test-notice: 12px;\n\t--font-size-input: 14px;\n\t--font-size-header: 20px;\n\t--font-size-paragraph: 14px;\n\t--font-size-link: 12px;\n\t--font-size-error: 12px;\n\t--font-size-html-h1: 28px;\n\t--font-size-html-h2: 20px;\n\t--font-size-html-h3: 16px;\n\t--font-size-html-h4: 14px;\n\t--font-size-html-h5: 12px;\n\t--font-size-html-h6: 10px;\n\t--font-size-subheader: 14px;\n\n\t/* Colors */\n\t--color-background: #fbfcfe;\n\t--color-test-notice-text: #e6a23d;\n\t--color-test-notice-bg: #fefaf6;\n\t--color-test-notice-border: #f6dcb7;\n\t--color-card-bg: #ffffff;\n\t--color-card-border: #dbdfe7;\n\t--color-card-shadow: rgba(99, 77, 255, 0.06);\n\t--color-link: #7e8186;\n\t--color-header: #525356;\n\t--color-label: #555555;\n\t--color-input-border: #dbdfe7;\n\t--color-input-text: #71747A;\n\t--color-focus-border: rgb(90, 76, 194);\n\t--color-submit-btn-bg: #ff6d5a;\n\t--color-submit-btn-text: #ffffff;\n\t--color-error: #ea1f30;\n\t--color-required: #ff6d5a;\n\t--color-clear-button-bg: #7e8186;\n\t--color-html-text: #555;\n\t--color-html-link: #ff6d5a;\n\t--color-header-subtext: #7e8186;\n\n\t/* Border Radii */\n\t--border-radius-card: 8px;\n\t--border-radius-input: 6px;\n\t--border-radius-clear-btn: 50%;\n\t--card-border-radius: 8px;\n\n\t/* Spacing */\n\t--padding-container-top: 24px;\n\t--padding-card: 24px;\n\t--padding-test-notice-vertical: 12px;\n\t--padding-test-notice-horizontal: 24px;\n\t--margin-bottom-card: 16px;\n\t--padding-form-input: 12px;\n\t--card-padding: 24px;\n\t--card-margin-bottom: 16px;\n\n\t/* Dimensions */\n\t--container-width: 448px;\n\t--submit-btn-height: 48px;\n\t--checkbox-size: 18px;\n\n\t/* Others */\n\t--box-shadow-card: 0px 4px 16px 0px var(--color-card-shadow);\n\t--opacity-placeholder: 0.5;\n}",
          "description": "Override default styling of the response form with CSS"
        },
        {
          "displayName": "Limit Wait Time",
          "name": "limitWaitTime",
          "type": "fixedCollection",
          "description": "Whether to limit the time this node should wait for a user response before execution resumes",
          "default": {
            "values": {
              "limitType": "afterTimeInterval",
              "resumeAmount": 45,
              "resumeUnit": "minutes"
            }
          },
          "options": [
            {
              "displayName": "Values",
              "name": "values",
              "values": [
                {
                  "displayName": "Limit Type",
                  "name": "limitType",
                  "type": "options",
                  "default": "afterTimeInterval",
                  "description": "Sets the condition for the execution to resume. Can be a specified date or after some time.",
                  "options": [
                    {
                      "name": "After Time Interval",
                      "description": "Waits for a certain amount of time",
                      "value": "afterTimeInterval"
                    },
                    {
                      "name": "At Specified Time",
                      "description": "Waits until the set date and time to continue",
                      "value": "atSpecifiedTime"
                    }
                  ]
                },
                {
                  "displayName": "Amount",
                  "name": "resumeAmount",
                  "type": "number",
                  "displayOptions": {
                    "show": {
                      "limitType": [
                        "afterTimeInterval"
                      ]
                    }
                  },
                  "typeOptions": {
                    "minValue": 0,
                    "numberPrecision": 2
                  },
                  "default": 1,
                  "description": "The time to wait"
                },
                {
                  "displayName": "Unit",
                  "name": "resumeUnit",
                  "type": "options",
                  "displayOptions": {
                    "show": {
                      "limitType": [
                        "afterTimeInterval"
                      ]
                    }
                  },
                  "options": [
                    {
                      "name": "Minutes",
                      "value": "minutes"
                    },
                    {
                      "name": "Hours",
                      "value": "hours"
                    },
                    {
                      "name": "Days",
                      "value": "days"
                    }
                  ],
                  "default": "hours",
                  "description": "Unit of the interval value"
                },
                {
                  "displayName": "Max Date and Time",
                  "name": "maxDateAndTime",
                  "type": "dateTime",
                  "displayOptions": {
                    "show": {
                      "limitType": [
                        "atSpecifiedTime"
                      ]
                    }
                  },
                  "default": "",
                  "description": "Continue execution after the specified date and time"
                }
              ]
            }
          ]
        },
        {
          "displayName": "Append n8n Attribution",
          "name": "appendAttribution",
          "type": "boolean",
          "default": true,
          "description": "Whether to include the phrase \"This message was sent automatically with n8n\" to the end of the message"
        },
        {
          "displayName": "Reply to a Message",
          "name": "thread_ts",
          "type": "fixedCollection",
          "default": {},
          "placeholder": "Reply to a Message",
          "description": "Provide another message's Timestamp value to make this message a reply",
          "options": [
            {
              "displayName": "Reply to a Message",
              "name": "replyValues",
              "values": [
                {
                  "displayName": "Message Timestamp to Reply To",
                  "name": "thread_ts",
                  "type": "number",
                  "placeholder": "1663233118.856619",
                  "description": "Message timestamps are included in output data of Slack nodes, abbreviated to ts"
                },
                {
                  "displayName": "Also Send to Channel",
                  "name": "reply_broadcast",
                  "type": "boolean",
                  "default": false,
                  "description": "Whether the reply should be made visible to everyone in the channel or conversation"
                }
              ]
            }
          ]
        }
      ],
      "displayOptions": {
        "show": {
          "responseType": [
            "freeText",
            "customForm"
          ],
          "resource": [
            "message"
          ],
          "operation": [
            "sendAndWait"
          ]
        }
      }
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "add",
      "options": [
        {
          "name": "Add",
          "value": "add",
          "description": "Add a star to an item",
          "action": "Add a star"
        },
        {
          "name": "Delete",
          "value": "delete",
          "description": "Delete a star from an item",
          "action": "Delete a star"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "description": "Get many stars of autenticated user",
          "action": "Get many stars"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "star"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Item to Add Star",
      "name": "target",
      "type": "options",
      "default": "",
      "description": "Choose whether to add a star to a message or a file",
      "options": [
        {
          "name": "Message",
          "value": "message"
        },
        {
          "name": "File",
          "value": "file"
        }
      ],
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "add"
          ],
          "resource": [
            "star"
          ]
        }
      }
    },
    {
      "displayName": "Channel",
      "name": "channelId",
      "type": "resourceLocator",
      "default": {
        "mode": "list",
        "value": ""
      },
      "description": "The Slack channel to add a star to",
      "displayOptions": {
        "show": {
          "resource": [
            "star"
          ],
          "operation": [
            "add"
          ],
          "target": [
            "message",
            "file"
          ]
        }
      },
      "modes": [
        {
          "displayName": "From List",
          "name": "list",
          "type": "list",
          "placeholder": "Select a channel...",
          "typeOptions": {
            "searchListMethod": "getChannels",
            "searchable": true,
            "slowLoadNotice": {
              "message": "If loading is slow, try selecting a channel using \"By ID\" or \"By URL\"",
              "timeout": 15000
            }
          }
        },
        {
          "displayName": "By ID",
          "name": "id",
          "type": "string",
          "validation": [
            {
              "type": "regex",
              "properties": {
                "regex": "[a-zA-Z0-9]{2,}",
                "errorMessage": "Not a valid Slack Channel ID"
              }
            }
          ],
          "placeholder": "C0122KQ70S7E"
        },
        {
          "displayName": "By URL",
          "name": "url",
          "type": "string",
          "placeholder": "https://app.slack.com/client/TS9594PZK/B0556F47Z3A",
          "validation": [
            {
              "type": "regex",
              "properties": {
                "regex": "http(s)?://app.slack.com/client/.*/([a-zA-Z0-9]{2,})",
                "errorMessage": "Not a valid Slack Channel URL"
              }
            }
          ],
          "extractValue": {
            "type": "regex",
            "regex": "https://app.slack.com/client/.*/([a-zA-Z0-9]{2,})"
          }
        }
      ]
    },
    {
      "displayName": "File ID",
      "name": "fileId",
      "type": "string",
      "default": "",
      "description": "File to add star to",
      "displayOptions": {
        "show": {
          "resource": [
            "star"
          ],
          "operation": [
            "add"
          ],
          "target": [
            "file"
          ]
        }
      }
    },
    {
      "displayName": "Message Timestamp",
      "name": "timestamp",
      "type": "number",
      "description": "Timestamp of the message to add",
      "displayOptions": {
        "show": {
          "resource": [
            "star"
          ],
          "operation": [
            "add"
          ],
          "target": [
            "message"
          ]
        }
      }
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "description": "Options to set",
      "options": [
        {
          "displayName": "File Comment",
          "name": "fileComment",
          "type": "string",
          "default": "",
          "description": "File comment to add star to"
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "add"
          ],
          "resource": [
            "star"
          ]
        }
      }
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "description": "Options to set",
      "options": [
        {
          "displayName": "Channel Name or ID",
          "name": "channelId",
          "type": "options",
          "typeOptions": {
            "loadOptionsMethod": "getChannels"
          },
          "default": "",
          "description": "Channel to add star to, or channel where the message to add star to was posted (used with timestamp). Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>."
        },
        {
          "displayName": "File ID",
          "name": "fileId",
          "type": "string",
          "default": "",
          "description": "File to add star to"
        },
        {
          "displayName": "File Comment",
          "name": "fileComment",
          "type": "string",
          "default": "",
          "description": "File comment to add star to"
        },
        {
          "displayName": "Message Timestamp",
          "name": "timestamp",
          "type": "number",
          "default": 0,
          "description": "Timestamp of the message to delete",
          "placeholder": "1663233118.856619"
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "delete"
          ],
          "resource": [
            "star"
          ]
        }
      }
    },
    {
      "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": [
            "star"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 50,
      "description": "Max number of results to return",
      "displayOptions": {
        "show": {
          "resource": [
            "star"
          ],
          "operation": [
            "getAll"
          ],
          "returnAll": [
            false
          ]
        }
      },
      "typeOptions": {
        "minValue": 1,
        "maxValue": 100
      }
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "upload",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a file"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "description": "Get & filters team files",
          "action": "Get many files"
        },
        {
          "name": "Upload",
          "value": "upload",
          "description": "Create or upload an existing file",
          "action": "Upload a file"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "file"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Binary File",
      "name": "binaryData",
      "type": "boolean",
      "default": false,
      "description": "Whether the data to upload should be taken from binary field",
      "displayOptions": {
        "show": {
          "operation": [
            "upload"
          ],
          "resource": [
            "file"
          ],
          "@version": [
            2,
            2.1
          ]
        }
      }
    },
    {
      "displayName": "File Content",
      "name": "fileContent",
      "type": "string",
      "default": "",
      "displayOptions": {
        "show": {
          "operation": [
            "upload"
          ],
          "resource": [
            "file"
          ],
          "binaryData": [
            false
          ],
          "@version": [
            2,
            2.1
          ]
        }
      }
    },
    {
      "displayName": "File Property",
      "name": "binaryPropertyName",
      "type": "string",
      "default": "data",
      "description": "Name of the binary property which contains the data for the file to be uploaded",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "upload"
          ],
          "resource": [
            "file"
          ],
          "binaryData": [
            true
          ],
          "@version": [
            2,
            2.1
          ]
        }
      }
    },
    {
      "displayName": "File Property",
      "name": "binaryPropertyName",
      "type": "string",
      "default": "data",
      "description": "Name of the binary property which contains the data for the file to be uploaded",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "upload"
          ],
          "resource": [
            "file"
          ],
          "@version": [
            {
              "_cnd": {
                "gte": 2.2
              }
            }
          ]
        }
      }
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "description": "Other options to set",
      "options": [
        {
          "displayName": "Channel Names or IDs",
          "name": "channelIds",
          "type": "multiOptions",
          "typeOptions": {
            "loadOptionsMethod": "getChannels"
          },
          "displayOptions": {
            "show": {
              "@version": [
                2,
                2.1
              ]
            }
          },
          "default": [],
          "description": "The channels to send the file to. Choose from the list, or specify IDs using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>."
        },
        {
          "displayName": "Channel Name or ID",
          "name": "channelId",
          "type": "options",
          "typeOptions": {
            "loadOptionsMethod": "getChannels"
          },
          "displayOptions": {
            "show": {
              "@version": [
                {
                  "_cnd": {
                    "gte": 2.2
                  }
                }
              ]
            }
          },
          "default": [],
          "description": "The channel to send the file to. Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>."
        },
        {
          "displayName": "File Name",
          "name": "fileName",
          "type": "string",
          "default": ""
        },
        {
          "displayName": "Initial Comment",
          "name": "initialComment",
          "type": "string",
          "default": "",
          "description": "The message text introducing the file in specified channels"
        },
        {
          "displayName": "Thread Timestamp",
          "name": "threadTs",
          "type": "string",
          "default": "",
          "description": "Provide another message's Timestamp value to upload this file as a reply. Never use a reply's Timestamp value; use its parent instead."
        },
        {
          "displayName": "Title",
          "name": "title",
          "type": "string",
          "default": ""
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "upload"
          ],
          "resource": [
            "file"
          ]
        }
      }
    },
    {
      "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": [
            "file"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 50,
      "description": "Max number of results to return",
      "displayOptions": {
        "show": {
          "resource": [
            "file"
          ],
          "operation": [
            "getAll"
          ],
          "returnAll": [
            false
          ]
        }
      },
      "typeOptions": {
        "minValue": 1,
        "maxValue": 100
      }
    },
    {
      "displayName": "Filters",
      "name": "filters",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Channel Name or ID",
          "name": "channelId",
          "type": "options",
          "default": "",
          "typeOptions": {
            "loadOptionsMethod": "getChannels"
          },
          "description": "Channel containing the file to be listed. Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>."
        },
        {
          "displayName": "Show Files Hidden By Limit",
          "name": "showFilesHidden",
          "type": "boolean",
          "default": false,
          "description": "Whether to show truncated file info for files hidden due to being too old, and the team who owns the file being over the file limit"
        },
        {
          "displayName": "Message Timestamp From",
          "name": "tsFrom",
          "type": "string",
          "default": "",
          "description": "Filter files created after this timestamp (inclusive)"
        },
        {
          "displayName": "Message Timestamp To",
          "name": "tsTo",
          "type": "string",
          "default": "",
          "description": "Filter files created before this timestamp (inclusive)"
        },
        {
          "displayName": "Types",
          "name": "types",
          "type": "multiOptions",
          "options": [
            {
              "name": "All",
              "value": "all"
            },
            {
              "name": "Google Docs",
              "value": "gdocs"
            },
            {
              "name": "Images",
              "value": "images"
            },
            {
              "name": "PDFs",
              "value": "pdfs"
            },
            {
              "name": "Snippets",
              "value": "snippets"
            },
            {
              "name": "Spaces",
              "value": "spaces"
            },
            {
              "name": "zips",
              "value": "zips"
            }
          ],
          "default": [
            "all"
          ],
          "description": "Filter files by type"
        },
        {
          "displayName": "User Name or ID",
          "name": "userId",
          "type": "options",
          "default": "",
          "typeOptions": {
            "loadOptionsMethod": "getUsers"
          },
          "description": "Filter files created by a single user. Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>."
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "getAll"
          ],
          "resource": [
            "file"
          ]
        }
      }
    },
    {
      "displayName": "File ID",
      "name": "fileId",
      "type": "string",
      "default": "",
      "displayOptions": {
        "show": {
          "resource": [
            "file"
          ],
          "operation": [
            "get"
          ]
        }
      }
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "add",
      "options": [
        {
          "name": "Add",
          "value": "add",
          "description": "Adds a reaction to a message",
          "action": "Add a reaction"
        },
        {
          "name": "Get",
          "value": "get",
          "description": "Get the reactions of a message",
          "action": "Get a reaction"
        },
        {
          "name": "Remove",
          "value": "remove",
          "description": "Remove a reaction of a message",
          "action": "Remove a reaction"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "reaction"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Channel",
      "name": "channelId",
      "type": "resourceLocator",
      "default": {
        "mode": "list",
        "value": ""
      },
      "description": "The Slack channel to get the reactions from",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "reaction"
          ],
          "operation": [
            "add",
            "get",
            "remove"
          ]
        }
      },
      "modes": [
        {
          "displayName": "From List",
          "name": "list",
          "type": "list",
          "placeholder": "Select a channel...",
          "typeOptions": {
            "searchListMethod": "getChannels",
            "searchable": true,
            "slowLoadNotice": {
              "message": "If loading is slow, try selecting a channel using \"By ID\" or \"By URL\"",
              "timeout": 15000
            }
          }
        },
        {
          "displayName": "By ID",
          "name": "id",
          "type": "string",
          "validation": [
            {
              "type": "regex",
              "properties": {
                "regex": "[a-zA-Z0-9]{2,}",
                "errorMessage": "Not a valid Slack Channel ID"
              }
            }
          ],
          "placeholder": "C0122KQ70S7E"
        },
        {
          "displayName": "By URL",
          "name": "url",
          "type": "string",
          "placeholder": "https://app.slack.com/client/TS9594PZK/B0556F47Z3A",
          "validation": [
            {
              "type": "regex",
              "properties": {
                "regex": "http(s)?://app.slack.com/client/.*/([a-zA-Z0-9]{2,})",
                "errorMessage": "Not a valid Slack Channel URL"
              }
            }
          ],
          "extractValue": {
            "type": "regex",
            "regex": "https://app.slack.com/client/.*/([a-zA-Z0-9]{2,})"
          }
        }
      ]
    },
    {
      "displayName": "Message Timestamp",
      "name": "timestamp",
      "type": "number",
      "description": "Timestamp of the message to add, get or remove",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "reaction"
          ],
          "operation": [
            "add",
            "get",
            "remove"
          ]
        }
      }
    },
    {
      "displayName": "Emoji Code",
      "name": "name",
      "type": "string",
      "default": "",
      "description": "Emoji code to use for the message reaction. Use emoji codes like +1, not an actual emoji like 👍. <a target=\"_blank\" href=\" https://www.webfx.com/tools/emoji-cheat-sheet/\">List of common emoji codes</a>",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "reaction"
          ],
          "operation": [
            "add",
            "remove"
          ]
        }
      }
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "info",
      "options": [
        {
          "name": "Get",
          "value": "info",
          "description": "Get information about a user",
          "action": "Get information about a user"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "description": "Get a list of many users",
          "action": "Get many users"
        },
        {
          "name": "Get User's Profile",
          "value": "getProfile",
          "description": "Get a user's profile",
          "action": "Get a user's profile"
        },
        {
          "name": "Get User's Status",
          "value": "getPresence",
          "description": "Get online status of a user",
          "action": "Get a user's presence status"
        },
        {
          "name": "Look Up by Email",
          "value": "lookupByEmail",
          "description": "Find a user by their email address",
          "action": "Look up a user by email"
        },
        {
          "name": "Update User's Profile",
          "value": "updateProfile",
          "description": "Update a user's profile",
          "action": "Update a user's profile"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "User",
      "name": "user",
      "type": "resourceLocator",
      "default": {
        "mode": "list",
        "value": ""
      },
      "description": "The ID of the user to get information about",
      "displayOptions": {
        "show": {
          "operation": [
            "info",
            "getProfile"
          ],
          "resource": [
            "user"
          ]
        }
      },
      "modes": [
        {
          "displayName": "From List",
          "name": "list",
          "type": "list",
          "placeholder": "Select a user...",
          "typeOptions": {
            "searchListMethod": "getUsers",
            "searchable": true
          }
        },
        {
          "displayName": "By ID",
          "name": "id",
          "type": "string",
          "validation": [
            {
              "type": "regex",
              "properties": {
                "regex": "[a-zA-Z0-9]{2,}",
                "errorMessage": "Not a valid Slack User ID"
              }
            }
          ],
          "placeholder": "U123AB45JGM"
        }
      ]
    },
    {
      "displayName": "Email",
      "name": "email",
      "type": "string",
      "default": "",
      "description": "The email address of the user to look up",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ],
          "operation": [
            "lookupByEmail"
          ]
        }
      }
    },
    {
      "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": 100
      }
    },
    {
      "displayName": "User",
      "name": "user",
      "type": "resourceLocator",
      "default": {
        "mode": "list",
        "value": ""
      },
      "description": "The ID of the user to get the online status of",
      "displayOptions": {
        "show": {
          "operation": [
            "getPresence"
          ],
          "resource": [
            "user"
          ]
        }
      },
      "modes": [
        {
          "displayName": "From List",
          "name": "list",
          "type": "list",
          "placeholder": "Select a user...",
          "typeOptions": {
            "searchListMethod": "getUsers",
            "searchable": true
          }
        },
        {
          "displayName": "By ID",
          "name": "id",
          "type": "string",
          "validation": [
            {
              "type": "regex",
              "properties": {
                "regex": "[a-zA-Z0-9]{2,}",
                "errorMessage": "Not a valid Slack User ID"
              }
            }
          ],
          "placeholder": "U123AB45JGM"
        }
      ]
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Custom Fields",
          "name": "customFieldUi",
          "placeholder": "Add Custom Fields",
          "type": "fixedCollection",
          "typeOptions": {
            "multipleValues": true
          },
          "default": {},
          "options": [
            {
              "name": "customFieldValues",
              "displayName": "Custom Field",
              "values": [
                {
                  "displayName": "Field Name or ID",
                  "name": "id",
                  "type": "options",
                  "typeOptions": {
                    "loadOptionsMethod": "getTeamFields"
                  },
                  "default": "",
                  "description": "ID of the field to set. Choose from the list, or specify an ID using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>."
                },
                {
                  "displayName": "Field Value",
                  "name": "value",
                  "type": "string",
                  "default": "",
                  "description": "Value of the field to set"
                },
                {
                  "displayName": "Alt",
                  "name": "alt",
                  "type": "string",
                  "default": ""
                }
              ]
            }
          ]
        },
        {
          "displayName": "Email",
          "name": "email",
          "type": "string",
          "placeholder": "name@email.com",
          "default": "",
          "description": "This field can only be changed by admins for users on paid teams"
        },
        {
          "displayName": "First Name",
          "name": "first_name",
          "type": "string",
          "default": ""
        },
        {
          "displayName": "Last Name",
          "name": "last_name",
          "type": "string",
          "default": ""
        },
        {
          "displayName": "Set Status",
          "name": "status",
          "type": "fixedCollection",
          "typeOptions": {
            "multipleValues": true
          },
          "default": {},
          "placeholder": "Set Status",
          "options": [
            {
              "displayName": "Set Status",
              "name": "set_status",
              "values": [
                {
                  "displayName": "Status Emoji",
                  "name": "status_emoji",
                  "type": "string",
                  "default": "",
                  "description": "Is a string referencing an emoji enabled for the Slack team, such as :mountain_railway:"
                },
                {
                  "displayName": "Status Expiration",
                  "name": "status_expiration",
                  "type": "dateTime",
                  "default": "",
                  "description": "The number of minutes to wait until this status expires and is cleared. Optional."
                },
                {
                  "displayName": "Status Text",
                  "name": "status_text",
                  "type": "string",
                  "default": "",
                  "description": "Allows up to 100 characters, though we strongly encourage brevity"
                }
              ]
            }
          ]
        },
        {
          "displayName": "User ID",
          "name": "user",
          "type": "string",
          "default": "",
          "description": "ID of user to change. This argument may only be specified by team admins on paid teams."
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ],
          "operation": [
            "updateProfile"
          ]
        }
      }
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Add Users",
          "value": "updateUsers",
          "action": "Add users to a user group"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create a user group"
        },
        {
          "name": "Disable",
          "value": "disable",
          "action": "Disable a user group"
        },
        {
          "name": "Enable",
          "value": "enable",
          "action": "Enable a user group"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get many user groups"
        },
        {
          "name": "Get Users",
          "value": "getUsers",
          "action": "Get users from a user group"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a user group"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "userGroup"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Name",
      "name": "name",
      "type": "string",
      "default": "",
      "description": "A name for the User Group. Must be unique among User Groups.",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "create"
          ],
          "resource": [
            "userGroup"
          ]
        }
      }
    },
    {
      "displayName": "Options",
      "name": "Options",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Channel Names or IDs",
          "name": "channelIds",
          "type": "multiOptions",
          "typeOptions": {
            "loadOptionsMethod": "getChannels"
          },
          "default": [],
          "description": "A comma-separated string of encoded channel IDs for which the User Group uses as a default. Choose from the list, or specify IDs using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>."
        },
        {
          "displayName": "Description",
          "name": "description",
          "type": "string",
          "default": "",
          "description": "A short description of the User Group"
        },
        {
          "displayName": "Handle",
          "name": "handle",
          "type": "string",
          "default": "",
          "description": "A mention handle. Must be unique among channels, users and User Groups."
        },
        {
          "displayName": "Include Count",
          "name": "include_count",
          "type": "boolean",
          "default": true,
          "description": "Whether to include the number of users in each User Group"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "userGroup"
          ],
          "operation": [
            "create"
          ]
        }
      }
    },
    {
      "displayName": "User Group ID",
      "name": "userGroupId",
      "type": "string",
      "default": "",
      "description": "The encoded ID of the User Group to update",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "disable"
          ],
          "resource": [
            "userGroup"
          ]
        }
      }
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Include Count",
          "name": "include_count",
          "type": "boolean",
          "default": true,
          "description": "Whether to include the number of users in each User Group"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "userGroup"
          ],
          "operation": [
            "disable"
          ]
        }
      }
    },
    {
      "displayName": "User Group ID",
      "name": "userGroupId",
      "type": "string",
      "default": "",
      "description": "The encoded ID of the User Group to update",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "enable"
          ],
          "resource": [
            "userGroup"
          ]
        }
      }
    },
    {
      "displayName": "Options",
      "name": "option",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Include Count",
          "name": "include_count",
          "type": "boolean",
          "default": true,
          "description": "Whether to include the number of users in each User Group"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "userGroup"
          ],
          "operation": [
            "enable"
          ]
        }
      }
    },
    {
      "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"
          ],
          "resource": [
            "userGroup"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 100,
      "description": "Max number of results to return",
      "displayOptions": {
        "show": {
          "operation": [
            "getAll"
          ],
          "resource": [
            "userGroup"
          ],
          "returnAll": [
            false
          ]
        }
      },
      "typeOptions": {
        "minValue": 1,
        "maxValue": 500
      }
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Include Count",
          "name": "include_count",
          "type": "boolean",
          "default": true,
          "description": "Whether to include the number of users in each User Group"
        },
        {
          "displayName": "Include Disabled",
          "name": "include_disabled",
          "type": "boolean",
          "default": true,
          "description": "Whether to include disabled User Groups"
        },
        {
          "displayName": "Include Users",
          "name": "include_users",
          "type": "boolean",
          "default": true,
          "description": "Whether to include the list of users for each User Group"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "userGroup"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "User Group ID",
      "name": "userGroupId",
      "type": "string",
      "default": "",
      "description": "The encoded ID of the User Group to update",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "update"
          ],
          "resource": [
            "userGroup"
          ]
        }
      }
    },
    {
      "displayName": "Update Fields",
      "name": "updateFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Channel Names or IDs",
          "name": "channels",
          "type": "multiOptions",
          "typeOptions": {
            "loadOptionsMethod": "getChannels"
          },
          "default": [],
          "description": "A comma-separated string of encoded channel IDs for which the User Group uses as a default. Choose from the list, or specify IDs using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>."
        },
        {
          "displayName": "Description",
          "name": "description",
          "type": "string",
          "default": "",
          "description": "A short description of the User Group"
        },
        {
          "displayName": "Handle",
          "name": "handle",
          "type": "string",
          "default": "",
          "description": "A mention handle. Must be unique among channels, users and User Groups."
        },
        {
          "displayName": "Include Count",
          "name": "include_count",
          "type": "boolean",
          "default": true,
          "description": "Whether to include the number of users in each User Group"
        },
        {
          "displayName": "Name",
          "name": "name",
          "type": "string",
          "default": "",
          "description": "A name for the User Group. Must be unique among User Groups."
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "userGroup"
          ],
          "operation": [
            "update"
          ]
        }
      }
    },
    {
      "displayName": "User Group ID",
      "name": "userGroupId",
      "type": "string",
      "default": "",
      "description": "The encoded ID of the User Group to update",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "updateUsers"
          ],
          "resource": [
            "userGroup"
          ]
        }
      }
    },
    {
      "displayName": "User Names or IDs",
      "name": "users",
      "type": "multiOptions",
      "default": [],
      "description": "Users to add to the User Group. Existing users will be preserved. Choose from the list, or specify IDs using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>.",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "updateUsers"
          ],
          "resource": [
            "userGroup"
          ]
        }
      },
      "typeOptions": {
        "loadOptionsMethod": "getUsers"
      }
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Include Count",
          "name": "include_count",
          "type": "boolean",
          "default": true,
          "description": "Whether to include the number of users in the User Group"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "userGroup"
          ],
          "operation": [
            "updateUsers"
          ]
        }
      }
    },
    {
      "displayName": "User Group ID",
      "name": "userGroupId",
      "type": "string",
      "default": "",
      "description": "The encoded ID of the User Group",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "getUsers"
          ],
          "resource": [
            "userGroup"
          ]
        }
      }
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Resolve Data",
          "name": "resolveData",
          "type": "boolean",
          "default": true,
          "description": "Whether to return full user objects instead of just user IDs"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "userGroup"
          ],
          "operation": [
            "getUsers"
          ]
        }
      }
    }
  ]

operations:
  [
    {
      "operation": "archive",
      "name": "Archive",
      "description": "Archives a conversation",
      "resource": "channel"
    },
    {
      "operation": "close",
      "name": "Close",
      "description": "Closes a direct message or multi-person direct message",
      "resource": "channel"
    },
    {
      "operation": "create",
      "name": "Create",
      "description": "Initiates a public or private channel-based conversation",
      "resource": "channel"
    },
    {
      "operation": "get",
      "name": "Get",
      "description": "Get information about a channel",
      "resource": "channel"
    },
    {
      "operation": "getAll",
      "name": "Get Many",
      "description": "Get many channels in a Slack team",
      "resource": "channel"
    },
    {
      "operation": "history",
      "name": "History",
      "description": "Get a conversation's history of messages and events",
      "resource": "channel"
    },
    {
      "operation": "invite",
      "name": "Invite",
      "description": "Invite a user to a channel",
      "resource": "channel"
    },
    {
      "operation": "join",
      "name": "Join",
      "description": "Joins an existing conversation",
      "resource": "channel"
    },
    {
      "operation": "kick",
      "name": "Kick",
      "description": "Removes a user from a channel",
      "resource": "channel"
    },
    {
      "operation": "leave",
      "name": "Leave",
      "description": "Leaves a conversation",
      "resource": "channel"
    },
    {
      "operation": "member",
      "name": "Member",
      "description": "List members of a conversation",
      "resource": "channel"
    },
    {
      "operation": "open",
      "name": "Open",
      "description": "Opens or resumes a direct message or multi-person direct message",
      "resource": "channel"
    },
    {
      "operation": "rename",
      "name": "Rename",
      "description": "Renames a conversation",
      "resource": "channel"
    },
    {
      "operation": "replies",
      "name": "Replies",
      "description": "Get a thread of messages posted to a channel",
      "resource": "channel"
    },
    {
      "operation": "setPurpose",
      "name": "Set Purpose",
      "description": "Sets the purpose for a conversation",
      "resource": "channel"
    },
    {
      "operation": "setTopic",
      "name": "Set Topic",
      "description": "Sets the topic for a conversation",
      "resource": "channel"
    },
    {
      "operation": "unarchive",
      "name": "Unarchive",
      "description": "Unarchives a conversation",
      "resource": "channel"
    },
    {
      "operation": "delete",
      "name": "Delete",
      "resource": "message"
    },
    {
      "operation": "deleteScheduled",
      "name": "Delete Scheduled",
      "resource": "message"
    },
    {
      "operation": "getManyScheduled",
      "name": "Get Many Scheduled",
      "resource": "message"
    },
    {
      "operation": "getPermalink",
      "name": "Get Permalink",
      "resource": "message"
    },
    {
      "operation": "schedule",
      "name": "Schedule",
      "resource": "message"
    },
    {
      "operation": "search",
      "name": "Search",
      "resource": "message"
    },
    {
      "operation": "post",
      "name": "Send",
      "resource": "message"
    },
    {
      "operation": "sendAndWait",
      "name": "Send and Wait for Response",
      "resource": "message"
    },
    {
      "operation": "update",
      "name": "Update",
      "resource": "message"
    },
    {
      "operation": "add",
      "name": "Add",
      "description": "Add a star to an item",
      "resource": "star"
    },
    {
      "operation": "delete",
      "name": "Delete",
      "description": "Delete a star from an item",
      "resource": "star"
    },
    {
      "operation": "getAll",
      "name": "Get Many",
      "description": "Get many stars of autenticated user",
      "resource": "star"
    },
    {
      "operation": "get",
      "name": "Get",
      "resource": "file"
    },
    {
      "operation": "getAll",
      "name": "Get Many",
      "description": "Get & filters team files",
      "resource": "file"
    },
    {
      "operation": "upload",
      "name": "Upload",
      "description": "Create or upload an existing file",
      "resource": "file"
    },
    {
      "operation": "add",
      "name": "Add",
      "description": "Adds a reaction to a message",
      "resource": "reaction"
    },
    {
      "operation": "get",
      "name": "Get",
      "description": "Get the reactions of a message",
      "resource": "reaction"
    },
    {
      "operation": "remove",
      "name": "Remove",
      "description": "Remove a reaction of a message",
      "resource": "reaction"
    },
    {
      "operation": "info",
      "name": "Get",
      "description": "Get information about a user",
      "resource": "user"
    },
    {
      "operation": "getAll",
      "name": "Get Many",
      "description": "Get a list of many users",
      "resource": "user"
    },
    {
      "operation": "getProfile",
      "name": "Get User's Profile",
      "description": "Get a user's profile",
      "resource": "user"
    },
    {
      "operation": "getPresence",
      "name": "Get User's Status",
      "description": "Get online status of a user",
      "resource": "user"
    },
    {
      "operation": "lookupByEmail",
      "name": "Look Up by Email",
      "description": "Find a user by their email address",
      "resource": "user"
    },
    {
      "operation": "updateProfile",
      "name": "Update User's Profile",
      "description": "Update a user's profile",
      "resource": "user"
    },
    {
      "operation": "updateUsers",
      "name": "Add Users",
      "resource": "userGroup"
    },
    {
      "operation": "create",
      "name": "Create",
      "resource": "userGroup"
    },
    {
      "operation": "disable",
      "name": "Disable",
      "resource": "userGroup"
    },
    {
      "operation": "enable",
      "name": "Enable",
      "resource": "userGroup"
    },
    {
      "operation": "getAll",
      "name": "Get Many",
      "resource": "userGroup"
    },
    {
      "operation": "getUsers",
      "name": "Get Users",
      "resource": "userGroup"
    },
    {
      "operation": "update",
      "name": "Update",
      "resource": "userGroup"
    }
  ]

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


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

outputs:
  [
  "main"
  ]

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

  # Slack Trigger node

  Use the Slack Trigger node to respond to events in [Slack](https://slack.com/){:target=_blank .external-link} and integrate Slack with other applications. n8n has built-in support for a wide range of Slack events, including new messages, reactions, and new channels.

  On this page, you'll find a list of events the Slack Trigger node can respond to and links to more resources.

  ///  note  | Credentials
  You can find authentication information for this node [here](/integrations/builtin/credentials/slack.md).
  ///
  ///  note  | Examples and templates
  For usage examples and templates to help you get started, refer to n8n's [Slack integrations](https://n8n.io/integrations/slack-trigger/){:target=_blank .external-link} page.
  ///

  ## Events

  * **Any Event**: The node triggers on any event in Slack.
  * **Bot / App Mention**: The node triggers when your bot or app is [mentioned](https://slack.com/help/articles/205240127-Use-mentions-in-Slack){:target=_blank .external-link} in a channel the app is in.
  * **File Made Public**: The node triggers when a file is [made public](https://slack.com/help/articles/4412651915539-Manage-public-file-sharing){:target=_blank .external-link}.
  * **File Shared**: The node triggers when a file is [shared](https://slack.com/help/articles/201330736-Add-files-to-Slack){:target=_blank .external-link} in a channel the app is in.
  * **New Message Posted to Channel**: The node triggers when a new message is posted to a channel the app is in.
  * **New Public Channel Created**: The node triggers when a new [public channel](https://slack.com/help/articles/360017938993-What-is-a-channel){:target=_blank .external-link} is created.
  * **New User**: The node triggers when a new user is added to Slack.
  * **Reaction Added**: The node triggers when a [reaction](https://slack.com/help/articles/202931348-Use-emoji-and-reactions){:target=_blank .external-link} is added to a message the app is added to.

  ## Parameters

  Once you've set the events to trigger on, use the remaining parameters to further define the node's behavior:

  * **Watch Whole Workspace**: Whether the node should watch for the selected **Events** in all channels in the workspace (turned on) or not (turned off, default).

      ///warning | Caution
      This will use one execution for every event in any channel your bot or app is in. Use with caution!
      ///

  * **Channel to Watch**: Select the channel your node should watch for the selected **Events**. This parameter only appears if you don't turn on **Watch Whole Workspace**. You can select a channel:
      * **From list**: The node uses your credential to look up a list of channels in the workspace so you can select the channel you want.
      * **By ID**: Enter the ID of a channel you want to watch. Slack displays the channel ID at the bottom of the channel details with a one-click copy button.
      * **By URL**: Enter the URL of the channel you want to watch, formatted as `https://app.slack.com/client/<channel-address>`.
  * **Download Files**: Whether to download files and use them in the node's output (turned on) or not (turned off, default). Use this parameter with the **File Made Public** and **File Shared** events.

  ## Options

  You can further refine the node's behavior when you **Add Option**s:

  * **Resolve IDs**: Whether to resolve the IDs to their respective names and return them (turned on) or not (turned off, default).
  * **Usernames or IDs to ignore**: Select usernames or enter a comma-separated string of encoded user IDs to ignore events from. Choose from the list, or specify IDs using an [expression](/code/expressions.md).

  ## Related resources

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

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

  Refer to [Slack's documentation](https://api.slack.com/apis/connections/events-api){:target=_blank .external-link} for details about their API.

  ## Required scopes

  To use this node, you need to create an application in Slack and enable event subscriptions. Refer to [Slack credentials | Slack Trigger configuration](/integrations/builtin/credentials/slack.md#slack-trigger-configuration) for more information.

  You must add the appropriate scopes to your Slack app for this trigger node to work.

  The node requires scopes for the [conversations.list](https://api.slack.com/methods/conversations.list){:target=blank .external-link} and [users.list](https://api.slack.com/methods/users.list){:target=blank .external-link} methods at minimum. Check out the [Scopes | Slack credentials](/integrations/builtin/credentials/slack.md#scopes) list for a more complete list of scopes.

  ## Common issues

  Here are some common errors and issues with the Slack Trigger node and steps to resolve or troubleshoot them.

  ### Workflow only works in testing or production

  Slack only allows you to register a single webhook per app. This means that you can't switch from using the testing URL to the production URL (and vice versa) without reconfiguring the registered webhook URL. 

  You may have trouble with this if you try to test a workflow that's also active in production. Slack will only send events to one of the two webhook URLs, so the other will never receive event notifications.

  To work around this, you can disable your workflow when testing:

  /// warning | Halts production traffic
  This temporarily disables your production workflow for testing. Your workflow will no longer receive production traffic while it's deactivated.
  ///

  1. Go to your workflow page.
  2. Toggle the **Active** switch in the top panel to disable the workflow temporarily.
  3. Edit the **Request URL** in your the [Slack Trigger configuration](/integrations/builtin/credentials/slack.md#slack-trigger-configuration) to use the testing webhook URL instead of the production webhook URL.
  4. Test your workflow using the test webhook URL.
  5. When you finish testing, edit the **Request URL** in your the [Slack Trigger configuration](/integrations/builtin/credentials/slack.md#slack-trigger-configuration) to use the production webhook URL instead of the testing webhook URL.
  6. Toggle the **Inactive** toggle to enable the workflow again. The production webhook URL should resume working.

  ### Token expired

  --8<-- "_snippets/integrations/builtin/credentials/slack/token-rotation.md"

properties_schema:
  [
    {
      "displayName": "Authentication",
      "name": "authentication",
      "type": "hidden",
      "default": "accessToken"
    },
    {
      "displayName": "Set up a webhook in your Slack app to enable this node. <a href=\"https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.slacktrigger/#configure-a-webhook-in-slack\" target=\"_blank\">More info</a>. We also recommend setting up a <a href=\"https://docs.n8n.io/integrations/builtin/trigger-nodes/n8n-nodes-base.slacktrigger/#verify-the-webhook\" target=\"_blank\">signing secret</a> to ensure the authenticity of requests.",
      "name": "notice",
      "type": "notice",
      "default": ""
    },
    {
      "displayName": "Trigger On",
      "name": "trigger",
      "type": "multiOptions",
      "default": [],
      "options": [
        {
          "name": "Any Event",
          "value": "any_event",
          "description": "Triggers on any event"
        },
        {
          "name": "App Home Opened",
          "value": "app_home_opened",
          "description": "When a user opens your app's Home tab"
        },
        {
          "name": "Bot / App Mention",
          "value": "app_mention",
          "description": "When your bot or app is mentioned in a channel the app is added to"
        },
        {
          "name": "File Made Public",
          "value": "file_public",
          "description": "When a file is made public"
        },
        {
          "name": "File Shared",
          "value": "file_share",
          "description": "When a file is shared in a channel the app is added to"
        },
        {
          "name": "New Message Posted to Channel",
          "value": "message",
          "description": "When a message is posted to a channel the app is added to"
        },
        {
          "name": "New Public Channel Created",
          "value": "channel_created",
          "description": "When a new public channel is created"
        },
        {
          "name": "New User",
          "value": "team_join",
          "description": "When a new user is added to Slack"
        },
        {
          "name": "Reaction Added",
          "value": "reaction_added",
          "description": "When a reaction is added to a message the app is added to"
        }
      ]
    },
    {
      "displayName": "Watch Whole Workspace",
      "name": "watchWorkspace",
      "type": "boolean",
      "default": false,
      "description": "Whether to watch for the event in the whole workspace, rather than a specific channel",
      "displayOptions": {
        "show": {
          "trigger": [
            "any_event",
            "message",
            "reaction_added",
            "file_share",
            "app_mention"
          ]
        }
      }
    },
    {
      "displayName": "This will use one execution for every event in any channel your bot is in, use with caution",
      "name": "notice",
      "type": "notice",
      "default": "",
      "displayOptions": {
        "show": {
          "trigger": [
            "any_event",
            "message",
            "reaction_added",
            "file_share",
            "app_mention"
          ],
          "watchWorkspace": [
            true
          ]
        }
      }
    },
    {
      "displayName": "Channel to Watch",
      "name": "channelId",
      "type": "resourceLocator",
      "default": {
        "mode": "list",
        "value": ""
      },
      "description": "The Slack channel to listen to events from. Applies to events: Bot/App mention, File Shared, New Message Posted on Channel, Reaction Added.",
      "required": true,
      "displayOptions": {
        "show": {
          "watchWorkspace": [
            false
          ]
        }
      },
      "modes": [
        {
          "displayName": "From List",
          "name": "list",
          "type": "list",
          "placeholder": "Select a channel...",
          "typeOptions": {
            "searchListMethod": "getChannels",
            "searchable": true
          }
        },
        {
          "displayName": "By ID",
          "name": "id",
          "type": "string",
          "validation": [
            {
              "type": "regex",
              "properties": {
                "regex": "[a-zA-Z0-9]{2,}",
                "errorMessage": "Not a valid Slack Channel ID"
              }
            }
          ],
          "placeholder": "C0122KQ70S7E"
        },
        {
          "displayName": "By URL",
          "name": "url",
          "type": "string",
          "placeholder": "https://app.slack.com/client/TS9594PZK/B0556F47Z3A",
          "validation": [
            {
              "type": "regex",
              "properties": {
                "regex": "http(s)?://app.slack.com/client/.*/([a-zA-Z0-9]{2,})",
                "errorMessage": "Not a valid Slack Channel URL"
              }
            }
          ],
          "extractValue": {
            "type": "regex",
            "regex": "https://app.slack.com/client/.*/([a-zA-Z0-9]{2,})"
          }
        }
      ]
    },
    {
      "displayName": "Download Files",
      "name": "downloadFiles",
      "type": "boolean",
      "default": false,
      "description": "Whether to download the files and add it to the output",
      "displayOptions": {
        "show": {
          "trigger": [
            "any_event",
            "file_share"
          ]
        }
      }
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Resolve IDs",
          "name": "resolveIds",
          "type": "boolean",
          "default": false,
          "description": "Whether to resolve the IDs to their respective names and return them"
        },
        {
          "displayName": "Usernames or IDs to Ignore",
          "name": "userIds",
          "type": "multiOptions",
          "typeOptions": {
            "loadOptionsMethod": "getUsers"
          },
          "default": [],
          "description": "A comma-separated string of encoded user IDs. Choose from the list, or specify IDs using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>."
        },
        {
          "displayName": "Emoji Names to Filter",
          "name": "reactionEmojis",
          "type": "string",
          "default": "",
          "placeholder": "thumbsup, eyes, white_check_mark",
          "description": "Comma-separated list of emoji names to allow (without colons). Leave empty to trigger on any reaction.",
          "displayOptions": {
            "show": {
              "/trigger": [
                "reaction_added"
              ]
            }
          }
        }
      ]
    }
  ]


node_type: nodes-base.sms77Tool
package_name: n8n-nodes-base
display_name: seven Tool
description: Send SMS and make text-to-speech calls (AI Tool variant for use with AI Agents)
category: transform
development_style: programmatic
version: 1
credentials_required:
  [
  {
  "name": "sms77Api",
  "required": true
  }
  ]

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

output_names:
  [
  "Tool"
  ]

updated_at: 2026-07-16 12:10:22
tool_variant_of: nodes-base.sms77
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: seven node documentation
  description: Learn how to use the seven node in n8n. Follow technical documentation to integrate seven node into your workflows.
  contentType: [integration, reference]
  ---

  # seven node

  Use the seven node to automate work in seven, and integrate seven with other applications. n8n has built-in support for a wide range of seven features, including sending SMS, and converting text to voice. 

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

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

  ## Operations

  * SMS
      * Send SMS
  * Voice Call
      * Converts text to voice and calls a given number

  ## Templates and examples

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

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 seven"
    },
    {
      "displayName": "Resource",
      "name": "resource",
      "type": "options",
      "default": "sms",
      "options": [
        {
          "name": "SMS",
          "value": "sms"
        },
        {
          "name": "Voice Call",
          "value": "voice"
        }
      ],
      "noDataExpression": true
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "send",
      "options": [
        {
          "name": "Send",
          "value": "send",
          "description": "Send SMS",
          "action": "Send an SMS"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "sms"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "send",
      "options": [
        {
          "name": "Send",
          "value": "send",
          "description": "Converts text to voice and calls a given number",
          "action": "Convert text to voice"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "voice"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "From",
      "name": "from",
      "type": "string",
      "default": "",
      "description": "The caller ID displayed in the receivers display. Max 16 numeric or 11 alphanumeric characters.",
      "displayOptions": {
        "show": {
          "operation": [
            "send"
          ],
          "resource": [
            "sms"
          ]
        }
      }
    },
    {
      "displayName": "To",
      "name": "to",
      "type": "string",
      "default": "",
      "description": "The number of your recipient(s) separated by comma. Can be regular numbers or contact/groups from seven.",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "send"
          ],
          "resource": [
            "sms",
            "voice"
          ]
        }
      }
    },
    {
      "displayName": "Message",
      "name": "message",
      "type": "string",
      "default": "",
      "description": "The message to send. Max. 1520 characters",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "send"
          ],
          "resource": [
            "sms",
            "voice"
          ]
        }
      }
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Delay",
          "name": "delay",
          "type": "dateTime",
          "default": "",
          "description": "Pick a date for time delayed dispatch"
        },
        {
          "displayName": "Foreign ID",
          "name": "foreign_id",
          "type": "string",
          "default": "",
          "placeholder": "MyCustomForeignID",
          "description": "Custom foreign ID returned in DLR callbacks"
        },
        {
          "displayName": "Flash",
          "name": "flash",
          "type": "boolean",
          "default": false,
          "description": "Send as flash message being displayed directly the receiver's display"
        },
        {
          "displayName": "Label",
          "name": "label",
          "type": "string",
          "default": "",
          "placeholder": "MyCustomLabel",
          "description": "Custom label used to group analytics"
        },
        {
          "displayName": "Performance Tracking",
          "name": "performance_tracking",
          "type": "boolean",
          "default": false,
          "description": "Whether to enable performance tracking for URLs found in the message text"
        },
        {
          "displayName": "TTL",
          "name": "ttl",
          "type": "number",
          "default": 2880,
          "typeOptions": {
            "minValue": 1
          },
          "description": "Custom time to live specifying the validity period of a message in minutes"
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "send"
          ],
          "resource": [
            "sms"
          ]
        }
      }
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "From",
          "name": "from",
          "type": "string",
          "default": "",
          "placeholder": "+4901234567890",
          "description": "The caller ID. Please use only verified sender IDs, one of your virtual inbound numbers or one of our shared virtual numbers."
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "send"
          ],
          "resource": [
            "voice"
          ]
        }
      }
    }
  ]

operations:
  [
    {
      "operation": "send",
      "name": "Send",
      "description": "Send SMS",
      "resource": "sms"
    },
    {
      "operation": "send",
      "name": "Send",
      "description": "Converts text to voice and calls a given number",
      "resource": "voice"
    }
  ]


node_type: nodes-base.sms77
package_name: n8n-nodes-base
display_name: seven
description: Send SMS and make text-to-speech calls
category: transform
development_style: programmatic
version: 1
credentials_required:
  [
  {
  "name": "sms77Api",
  "required": true
  }
  ]

outputs:
  [
  "main"
  ]

updated_at: 2026-07-16 12:10:22
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: seven node documentation
  description: Learn how to use the seven node in n8n. Follow technical documentation to integrate seven node into your workflows.
  contentType: [integration, reference]
  ---

  # seven node

  Use the seven node to automate work in seven, and integrate seven with other applications. n8n has built-in support for a wide range of seven features, including sending SMS, and converting text to voice. 

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

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

  ## Operations

  * SMS
      * Send SMS
  * Voice Call
      * Converts text to voice and calls a given number

  ## Templates and examples

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

properties_schema:
  [
    {
      "displayName": "Resource",
      "name": "resource",
      "type": "options",
      "default": "sms",
      "options": [
        {
          "name": "SMS",
          "value": "sms"
        },
        {
          "name": "Voice Call",
          "value": "voice"
        }
      ],
      "noDataExpression": true
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "send",
      "options": [
        {
          "name": "Send",
          "value": "send",
          "description": "Send SMS",
          "action": "Send an SMS"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "sms"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "send",
      "options": [
        {
          "name": "Send",
          "value": "send",
          "description": "Converts text to voice and calls a given number",
          "action": "Convert text to voice"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "voice"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "From",
      "name": "from",
      "type": "string",
      "default": "",
      "description": "The caller ID displayed in the receivers display. Max 16 numeric or 11 alphanumeric characters.",
      "displayOptions": {
        "show": {
          "operation": [
            "send"
          ],
          "resource": [
            "sms"
          ]
        }
      }
    },
    {
      "displayName": "To",
      "name": "to",
      "type": "string",
      "default": "",
      "description": "The number of your recipient(s) separated by comma. Can be regular numbers or contact/groups from seven.",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "send"
          ],
          "resource": [
            "sms",
            "voice"
          ]
        }
      }
    },
    {
      "displayName": "Message",
      "name": "message",
      "type": "string",
      "default": "",
      "description": "The message to send. Max. 1520 characters",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "send"
          ],
          "resource": [
            "sms",
            "voice"
          ]
        }
      }
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Delay",
          "name": "delay",
          "type": "dateTime",
          "default": "",
          "description": "Pick a date for time delayed dispatch"
        },
        {
          "displayName": "Foreign ID",
          "name": "foreign_id",
          "type": "string",
          "default": "",
          "placeholder": "MyCustomForeignID",
          "description": "Custom foreign ID returned in DLR callbacks"
        },
        {
          "displayName": "Flash",
          "name": "flash",
          "type": "boolean",
          "default": false,
          "description": "Send as flash message being displayed directly the receiver's display"
        },
        {
          "displayName": "Label",
          "name": "label",
          "type": "string",
          "default": "",
          "placeholder": "MyCustomLabel",
          "description": "Custom label used to group analytics"
        },
        {
          "displayName": "Performance Tracking",
          "name": "performance_tracking",
          "type": "boolean",
          "default": false,
          "description": "Whether to enable performance tracking for URLs found in the message text"
        },
        {
          "displayName": "TTL",
          "name": "ttl",
          "type": "number",
          "default": 2880,
          "typeOptions": {
            "minValue": 1
          },
          "description": "Custom time to live specifying the validity period of a message in minutes"
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "send"
          ],
          "resource": [
            "sms"
          ]
        }
      }
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "From",
          "name": "from",
          "type": "string",
          "default": "",
          "placeholder": "+4901234567890",
          "description": "The caller ID. Please use only verified sender IDs, one of your virtual inbound numbers or one of our shared virtual numbers."
        }
      ],
      "displayOptions": {
        "show": {
          "operation": [
            "send"
          ],
          "resource": [
            "voice"
          ]
        }
      }
    }
  ]

operations:
  [
    {
      "operation": "send",
      "name": "Send",
      "description": "Send SMS",
      "resource": "sms"
    },
    {
      "operation": "send",
      "name": "Send",
      "description": "Converts text to voice and calls a given number",
      "resource": "voice"
    }
  ]


node_type: nodes-base.snowflakeTool
package_name: n8n-nodes-base
display_name: Snowflake Tool
description: Get, add and update data in Snowflake (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-07-16 12:10:22
tool_variant_of: nodes-base.snowflake
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Snowflake node documentation
  description: Learn how to use the Snowflake node in n8n. Follow technical documentation to integrate Snowflake node into your workflows.
  contentType: [integration, reference]
  ---

  # Snowflake node

  Use the Snowflake node to automate work in Snowflake, and integrate Snowflake with other applications. n8n has built-in support for a wide range of Snowflake features, including executing SQL queries, and inserting rows in a database. 

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

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

  ## Operations

  * Execute an SQL query.
  * Insert rows in database.
  * Update rows in database.

  ## Templates and examples

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

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 Snowflake"
    },
    {
      "displayName": "Authentication",
      "name": "authentication",
      "type": "options",
      "default": "credentials",
      "options": [
        {
          "name": "Credentials",
          "value": "credentials"
        },
        {
          "name": "OAuth2",
          "value": "oAuth2"
        }
      ]
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "insert",
      "options": [
        {
          "name": "Execute Query",
          "value": "executeQuery",
          "description": "Execute an SQL query",
          "action": "Execute a SQL query"
        },
        {
          "name": "Insert",
          "value": "insert",
          "description": "Insert rows in database",
          "action": "Insert rows in database"
        },
        {
          "name": "Update",
          "value": "update",
          "description": "Update rows in database",
          "action": "Update rows in database"
        }
      ],
      "noDataExpression": true
    },
    {
      "displayName": "Query",
      "name": "query",
      "type": "string",
      "default": "",
      "description": "The SQL query to execute",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "executeQuery"
          ]
        }
      },
      "typeOptions": {
        "editor": "sqlEditor"
      },
      "noDataExpression": true
    },
    {
      "displayName": "Table",
      "name": "table",
      "type": "string",
      "default": "",
      "description": "Name of the table in which to insert data to",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "insert"
          ]
        }
      }
    },
    {
      "displayName": "Columns",
      "name": "columns",
      "type": "string",
      "default": "",
      "description": "Comma-separated list of the properties which should used as columns for the new rows",
      "displayOptions": {
        "show": {
          "operation": [
            "insert"
          ]
        }
      }
    },
    {
      "displayName": "Table",
      "name": "table",
      "type": "string",
      "default": "",
      "description": "Name of the table in which to update data in",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "update"
          ]
        }
      }
    },
    {
      "displayName": "Update Key",
      "name": "updateKey",
      "type": "string",
      "default": "id",
      "description": "Name of the property which decides which rows in the database should be updated. Normally that would be \"id\".",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "update"
          ]
        }
      }
    },
    {
      "displayName": "Columns",
      "name": "columns",
      "type": "string",
      "default": "",
      "description": "Comma-separated list of the properties which should used as columns for rows to update",
      "displayOptions": {
        "show": {
          "operation": [
            "update"
          ]
        }
      }
    }
  ]

operations:
  [
    {
      "operation": "executeQuery",
      "name": "Execute Query",
      "description": "Execute an SQL query"
    },
    {
      "operation": "insert",
      "name": "Insert",
      "description": "Insert rows in database"
    },
    {
      "operation": "update",
      "name": "Update",
      "description": "Update rows in database"
    }
  ]

credentials_required:
  [
    {
      "name": "snowflake",
      "required": true,
      "displayOptions": {
        "show": {
          "authentication": [
            "credentials"
          ]
        }
      }
    },
    {
      "name": "snowflakeOAuth2Api",
      "required": true,
      "displayOptions": {
        "show": {
          "authentication": [
            "oAuth2"
          ]
        }
      }
    }
  ]


node_type: nodes-base.snowflake
package_name: n8n-nodes-base
display_name: Snowflake
description: Get, add and update data in Snowflake
category: input
development_style: programmatic
version: 1
outputs:
  [
  "main"
  ]

updated_at: 2026-07-16 12:10:22
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Snowflake node documentation
  description: Learn how to use the Snowflake node in n8n. Follow technical documentation to integrate Snowflake node into your workflows.
  contentType: [integration, reference]
  ---

  # Snowflake node

  Use the Snowflake node to automate work in Snowflake, and integrate Snowflake with other applications. n8n has built-in support for a wide range of Snowflake features, including executing SQL queries, and inserting rows in a database. 

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

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

  ## Operations

  * Execute an SQL query.
  * Insert rows in database.
  * Update rows in database.

  ## Templates and examples

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

properties_schema:
  [
    {
      "displayName": "Authentication",
      "name": "authentication",
      "type": "options",
      "default": "credentials",
      "options": [
        {
          "name": "Credentials",
          "value": "credentials"
        },
        {
          "name": "OAuth2",
          "value": "oAuth2"
        }
      ]
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "insert",
      "options": [
        {
          "name": "Execute Query",
          "value": "executeQuery",
          "description": "Execute an SQL query",
          "action": "Execute a SQL query"
        },
        {
          "name": "Insert",
          "value": "insert",
          "description": "Insert rows in database",
          "action": "Insert rows in database"
        },
        {
          "name": "Update",
          "value": "update",
          "description": "Update rows in database",
          "action": "Update rows in database"
        }
      ],
      "noDataExpression": true
    },
    {
      "displayName": "Query",
      "name": "query",
      "type": "string",
      "default": "",
      "description": "The SQL query to execute",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "executeQuery"
          ]
        }
      },
      "typeOptions": {
        "editor": "sqlEditor"
      },
      "noDataExpression": true
    },
    {
      "displayName": "Table",
      "name": "table",
      "type": "string",
      "default": "",
      "description": "Name of the table in which to insert data to",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "insert"
          ]
        }
      }
    },
    {
      "displayName": "Columns",
      "name": "columns",
      "type": "string",
      "default": "",
      "description": "Comma-separated list of the properties which should used as columns for the new rows",
      "displayOptions": {
        "show": {
          "operation": [
            "insert"
          ]
        }
      }
    },
    {
      "displayName": "Table",
      "name": "table",
      "type": "string",
      "default": "",
      "description": "Name of the table in which to update data in",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "update"
          ]
        }
      }
    },
    {
      "displayName": "Update Key",
      "name": "updateKey",
      "type": "string",
      "default": "id",
      "description": "Name of the property which decides which rows in the database should be updated. Normally that would be \"id\".",
      "required": true,
      "displayOptions": {
        "show": {
          "operation": [
            "update"
          ]
        }
      }
    },
    {
      "displayName": "Columns",
      "name": "columns",
      "type": "string",
      "default": "",
      "description": "Comma-separated list of the properties which should used as columns for rows to update",
      "displayOptions": {
        "show": {
          "operation": [
            "update"
          ]
        }
      }
    }
  ]

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

credentials_required:
  [
    {
      "name": "snowflake",
      "required": true,
      "displayOptions": {
        "show": {
          "authentication": [
            "credentials"
          ]
        }
      }
    },
    {
      "name": "snowflakeOAuth2Api",
      "required": true,
      "displayOptions": {
        "show": {
          "authentication": [
            "oAuth2"
          ]
        }
      }
    }
  ]


node_type: nodes-base.splitInBatches
package_name: n8n-nodes-base
display_name: Split In Batches
description: Split data into batches and iterate over each batch
category: organization
development_style: programmatic
version: 3
operations: []
credentials_required: []
outputs:
  [
  "main",
  "main"
  ]

output_names:
  [
  "done",
  "loop"
  ]

updated_at: 2026-07-16 12:10:22
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Loop Over Items (Split in Batches)
  description: Documentation for the Loop Over Items node in n8n, a workflow automation platform. Includes guidance on usage, and links to examples.
  contentType: [integration, reference]
  priority: critical
  ---

  # Loop Over Items

  The Loop Over Items node helps you loop through data when needed.

  The node saves the original incoming data, and with each iteration, returns a predefined amount of data through the **loop** output.

  When the node execution completes, it combines all of the processed data and returns it through the **done** output.



  ## CRITICAL OUTPUT CONNECTION INFORMATION

  **⚠️ OUTPUT INDICES ARE COUNTERINTUITIVE ⚠️**

  The SplitInBatches node has TWO outputs with specific indices:
  - **Output 0 (index 0) = "done"**: Receives final processed data when loop completes
  - **Output 1 (index 1) = "loop"**: Receives current batch data during iteration

  ### Correct Connection Pattern:
  1. Connect nodes that PROCESS items inside the loop to **Output 1 ("loop")**
  2. Connect nodes that run AFTER the loop completes to **Output 0 ("done")**
  3. The last processing node in the loop must connect back to the SplitInBatches node

  ### Common Mistake:
  AI assistants often connect these backwards because the logical flow (loop first, then done) doesn't match the technical indices (done=0, loop=1).

  ## When to use the Loop Over Items node

  By default, n8n nodes are designed to process a list of input items (with some exceptions, detailed below). Depending on what you're trying to achieve, you often don't need the Loop Over Items node in your workflow. You can learn more about how n8n processes multiple items on the [looping in n8n](/flow-logic/looping.md) page.

  These links highlight some of the cases where the Loop Over Items node can be useful:

  * [Loop until all items are processed](/flow-logic/looping.md#loop-until-all-items-are-processed): describes how the Loop Over Items node differs from normal item processing and when you might want to incorporate this node.
  * [Node exceptions](/flow-logic/looping.md#node-exceptions): outlines specific cases and nodes where you may need to use the Loop Over Items node to manually build looping logic.
  * [Avoiding rate limiting](/integrations/builtin/rate-limits.md): demonstrates how to batch API requests to avoid rate limits from other services.

  ## Node parameters

  ### Batch Size

  Enter the number of items to return with each call.

  ## Node options

  ### Reset

  If turned on, the node will reset with the current input-data newly initialized with each loop. Use this when you want the Loop Over Items node to treat incoming data as a new set of data instead of a continuation of previous items.

  For example, you can use the Loop Over Items node with the reset option and an [If node](/integrations/builtin/core-nodes/n8n-nodes-base.if.md) to query a paginated service when you don't know how many pages you need in advance. The loop queries pages one at a time, performs any processing, and increments the page number. The loop reset ensures the loop recognizes each iteration as a new set of data. The If node evaluates an exit condition to decide whether to perform another iteration or not.

  /// warning | Include a valid termination condition
  For workflows like the example described above, it's critical to include a valid termination condition for the loop. If your termination condition never matches, your workflow execution will get stuck in an infinite loop.
  ///

  When enabled, you can adjust the reset conditions by switching the parameter representation from **Fixed** to **Expression**. The results of your expression evaluation determine when the node will reset item processing.

  ## Templates and examples

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

  ### Read RSS feed from two different sources

  This workflow allows you to read an RSS feed from two different sources using the Loop Over Items node. You need the Loop Over Items node in the workflow as the RSS Feed Read node only processes the first item it receives. You can also find the [workflow](https://n8n.io/workflows/687-read-rss-feed-from-two-different-sources/){:target=_blank .external-link} on n8n.io.

  The example walks through building the workflow, but assumes you are already familiar with n8n. To build your first workflow, including learning how to add nodes to a workflow, refer to [Try it out](/try-it-out/index.md).

  The final workflow looks like this:

  [[ workflowDemo("file:///integrations/builtin/core-nodes/n8n-nodes-base.splitinbatches/rss-feed-example.json") ]]

  Copy the workflow file above and paste into your instance, or manually build it by following these steps:

  1. Add the manual trigger.
  2. Add the Code node.
  3. Copy this code into the Code node:
  	```js
  	return [
  		{
  			json: {
  				url: 'https://medium.com/feed/n8n-io',
  			}
  		},
  		{
  			json: {
  				url: 'https://dev.to/feed/n8n',
  			}
  		}
  	];
  	```
  4. Add the Loop Over Items node.
  5. Configure Loop Over Items: set the batch size to `1` in the **Batch Size** field.
  6. Add the RSS Feed Read node.
  7. Select **Test Workflow**. This runs the workflow to load data into the RSS Feed Read node.
  8. Configure RSS Feed Read: map `url` from the input to the **URL** field. You can do this by dragging and dropping from the **INPUT** panel, or using this expression: `{{ $json.url }}`.
  9. Select **Test Workflow** to run the workflow and see the resulting data.

  ### Check that the node has processed all items

  To check if the node still has items to process, use the following expression: `{{$node["Loop Over Items"].context["noItemsLeft"]}}`. This expression returns a boolean value. If the node still has data to process, the expression returns `false`, otherwise it returns `true`.

  ### Get the current running index of the node

  To get the current running index of the node, use the following expression: `{{$node["Loop Over Items"].context["currentRunIndex"];}}`.

properties_schema:
  [
    {
      "displayName": "You may not need this node — n8n nodes automatically run once for each input item. <a href=\"https://docs.n8n.io/getting-started/key-concepts/looping.html#using-loops-in-n8n\" target=\"_blank\">More info</a>",
      "name": "splitInBatchesNotice",
      "type": "notice",
      "default": ""
    },
    {
      "displayName": "Batch Size",
      "name": "batchSize",
      "type": "number",
      "default": 1,
      "description": "The number of items to return with each call",
      "typeOptions": {
        "minValue": 1
      }
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Reset",
          "name": "reset",
          "type": "boolean",
          "default": false,
          "description": "Whether the node starts again from the beginning of the input items. This will treat incoming data as a new set rather than continuing with the previous items."
        }
      ]
    }
  ]


node_type: nodes-base.splunk
package_name: n8n-nodes-base
display_name: Splunk
description: Consume the Splunk Enterprise API
category: transform
development_style: programmatic
version: 2
credentials_required:
  [
  {
  "name": "splunkApi",
  "required": true
  }
  ]

outputs:
  [
  "main"
  ]

updated_at: 2026-07-16 12:10:22
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Splunk node documentation
  description: Learn how to use the Splunk node in n8n. Follow technical documentation to integrate Splunk node into your workflows.
  contentType: [integration, reference]
  ---

  # Splunk node

  Use the Splunk node to automate work in Splunk, and integrate Splunk with other applications. n8n has built-in support for a wide range of Splunk features, including getting fired alerts reports, as well as deleting and getting search configuration. 

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

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

  ## Operations

  * Fired Alert
      * Get a fired alerts report
  * Search Configuration
      * Delete a search configuration
      * Get a search configuration
      * Get many search configurations
  * Search Job
      * Create a search job
      * Delete a search job
      * Get a search job
      * Get many search jobs
  * Search Result
      * Get many search results
  * User
      * Create a user
      * Delete a user
      * Get a user
      * Get many users
      * Update a user

  ## Templates and examples

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

properties_schema:
  [
    {
      "displayName": "Resource",
      "name": "resource",
      "type": "options",
      "default": "search",
      "options": [
        {
          "name": "Alert",
          "value": "alert"
        },
        {
          "name": "Report",
          "value": "report"
        },
        {
          "name": "Search",
          "value": "search"
        },
        {
          "name": "User",
          "value": "user"
        }
      ],
      "noDataExpression": true
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "getReport",
      "options": [
        {
          "name": "Get Fired Alerts",
          "value": "getReport",
          "description": "Retrieve a fired alerts report",
          "action": "Get a fired alerts report"
        },
        {
          "name": "Get Metrics",
          "value": "getMetrics",
          "description": "Retrieve metrics",
          "action": "Get metrics"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "alert"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Create From Search",
          "value": "create",
          "description": "Create a search report from a search job",
          "action": "Create a search report"
        },
        {
          "name": "Delete",
          "value": "deleteReport",
          "description": "Delete a search report",
          "action": "Delete a search report"
        },
        {
          "name": "Get",
          "value": "get",
          "description": "Retrieve a search report",
          "action": "Get a search report"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "description": "Retrieve many search reports",
          "action": "Get many search reports"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "report"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Search Job",
      "name": "searchJobId",
      "type": "resourceLocator",
      "default": {
        "mode": "list",
        "value": ""
      },
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "report"
          ],
          "operation": [
            "create"
          ]
        }
      },
      "modes": [
        {
          "displayName": "From List",
          "name": "list",
          "type": "list",
          "placeholder": "Select a search job...",
          "typeOptions": {
            "searchListMethod": "searchJobs",
            "searchable": true
          }
        },
        {
          "displayName": "ID",
          "name": "id",
          "type": "string",
          "placeholder": "e.g. 1718944376.178"
        }
      ]
    },
    {
      "displayName": "Name",
      "name": "name",
      "type": "string",
      "default": "",
      "description": "The name of the report",
      "displayOptions": {
        "show": {
          "resource": [
            "report"
          ],
          "operation": [
            "create"
          ]
        }
      }
    },
    {
      "displayName": "Report",
      "name": "reportId",
      "type": "resourceLocator",
      "default": {
        "mode": "list",
        "value": ""
      },
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "report"
          ],
          "operation": [
            "deleteReport"
          ]
        }
      },
      "modes": [
        {
          "displayName": "From List",
          "name": "list",
          "type": "list",
          "placeholder": "Select a report...",
          "typeOptions": {
            "searchListMethod": "searchReports",
            "searchable": true
          }
        },
        {
          "displayName": "ID",
          "name": "id",
          "type": "string",
          "placeholder": "e.g. Errors%20in%20the%20last%20hour"
        }
      ]
    },
    {
      "displayName": "Report",
      "name": "reportId",
      "type": "resourceLocator",
      "default": {
        "mode": "list",
        "value": ""
      },
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "report"
          ],
          "operation": [
            "get"
          ]
        }
      },
      "modes": [
        {
          "displayName": "From List",
          "name": "list",
          "type": "list",
          "placeholder": "Select a report...",
          "typeOptions": {
            "searchListMethod": "searchReports",
            "searchable": true
          }
        },
        {
          "displayName": "ID",
          "name": "id",
          "type": "string",
          "placeholder": "e.g. Errors%20in%20the%20last%20hour"
        }
      ]
    },
    {
      "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": [
            "report"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 50,
      "description": "Max number of results to return",
      "displayOptions": {
        "show": {
          "returnAll": [
            false
          ],
          "resource": [
            "report"
          ],
          "operation": [
            "getAll"
          ]
        }
      },
      "typeOptions": {
        "minValue": 1
      }
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Add Orphan Field",
          "name": "add_orphan_field",
          "description": "Whether to include a boolean value for each saved search to show whether the search is orphaned, meaning that it has no valid owner",
          "type": "boolean",
          "default": false
        },
        {
          "displayName": "List Default Actions",
          "name": "listDefaultActionArgs",
          "type": "boolean",
          "default": false
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "report"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "description": "Create a search job",
          "action": "Create a search job"
        },
        {
          "name": "Delete",
          "value": "deleteJob",
          "description": "Delete a search job",
          "action": "Delete a search job"
        },
        {
          "name": "Get",
          "value": "get",
          "description": "Retrieve a search job",
          "action": "Get a search job"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "description": "Retrieve many search jobs",
          "action": "Get many search jobs"
        },
        {
          "name": "Get Result",
          "value": "getResult",
          "description": "Get the result of a search job",
          "action": "Get the result of a search job"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "search"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Query",
      "name": "search",
      "type": "string",
      "default": "",
      "description": "Search language string to execute, in Splunk's <a href=\"https://docs.splunk.com/Documentation/Splunk/latest/SearchReference/WhatsInThisManual\">Search Processing Language</a>",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "search"
          ],
          "operation": [
            "create"
          ]
        }
      },
      "typeOptions": {
        "rows": 2
      }
    },
    {
      "displayName": "Additional Fields",
      "name": "additionalFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Ad Hoc Search Level",
          "name": "adhoc_search_level",
          "type": "options",
          "default": "verbose",
          "options": [
            {
              "name": "Fast",
              "value": "fast"
            },
            {
              "name": "Smart",
              "value": "smart"
            },
            {
              "name": "Verbose",
              "value": "verbose"
            }
          ]
        },
        {
          "displayName": "Auto-Cancel After (Seconds)",
          "name": "auto_cancel",
          "type": "number",
          "default": 0,
          "description": "Seconds after which the search job automatically cancels"
        },
        {
          "displayName": "Auto-Finalize After (Num Events)",
          "name": "auto_finalize_ec",
          "type": "number",
          "default": 0,
          "description": "Auto-finalize the search after at least this many events are processed"
        },
        {
          "displayName": "Auto Pause After (Seconds)",
          "name": "auto_pause",
          "type": "number",
          "default": 0,
          "description": "Seconds of inactivity after which the search job automatically pauses"
        },
        {
          "displayName": "Earliest Index",
          "name": "index_earliest",
          "type": "dateTime",
          "default": "",
          "description": "The earliest index time for the search (inclusive)"
        },
        {
          "displayName": "Earliest Time",
          "name": "earliest_time",
          "type": "dateTime",
          "default": "",
          "description": "The earliest cut-off for the search (inclusive)"
        },
        {
          "displayName": "Exec Mode",
          "name": "exec_mode",
          "type": "options",
          "default": "blocking",
          "options": [
            {
              "name": "Blocking",
              "value": "blocking"
            },
            {
              "name": "Normal",
              "value": "normal"
            },
            {
              "name": "One Shot",
              "value": "oneshot"
            }
          ]
        },
        {
          "displayName": "Indexed Real Time Offset",
          "name": "indexedRealtimeOffset",
          "type": "number",
          "default": 0,
          "description": "Seconds of disk sync delay for indexed real-time search"
        },
        {
          "displayName": "Latest Index",
          "name": "index_latest",
          "type": "dateTime",
          "default": "",
          "description": "The latest index time for the search (inclusive)"
        },
        {
          "displayName": "Latest Time",
          "name": "latest_time",
          "type": "dateTime",
          "default": "",
          "description": "The latest cut-off for the search (inclusive)"
        },
        {
          "displayName": "Max Time",
          "name": "max_time",
          "type": "number",
          "default": 0,
          "description": "Number of seconds to run this search before finalizing. Enter <code>0</code> to never finalize."
        },
        {
          "displayName": "Namespace",
          "name": "namespace",
          "type": "string",
          "default": "",
          "description": "Application namespace in which to restrict searches"
        },
        {
          "displayName": "Reduce Frequency",
          "name": "reduce_freq",
          "type": "number",
          "default": 0,
          "description": "How frequently to run the MapReduce reduce phase on accumulated map values"
        },
        {
          "displayName": "Remote Server List",
          "name": "remote_server_list",
          "type": "string",
          "default": "",
          "description": "Comma-separated list of (possibly wildcarded) servers from which raw events should be pulled. This same server list is to be used in subsearches."
        },
        {
          "displayName": "Reuse Limit (Seconds)",
          "name": "reuse_max_seconds_ago",
          "type": "number",
          "default": 0,
          "description": "Number of seconds ago to check when an identical search is started and return the job’s search ID instead of starting a new job"
        },
        {
          "displayName": "Required Field",
          "name": "rf",
          "type": "string",
          "default": "",
          "description": "Name of a required field to add to the search. Even if not referenced or used directly by the search, a required field is still included in events and summary endpoints."
        },
        {
          "displayName": "Search Mode",
          "name": "search_mode",
          "type": "options",
          "default": "normal",
          "options": [
            {
              "name": "Normal",
              "value": "normal"
            },
            {
              "name": "Real Time",
              "value": "realtime"
            }
          ]
        },
        {
          "displayName": "Status Buckets",
          "name": "status_buckets",
          "type": "number",
          "default": 0,
          "description": "The most status buckets to generate. Set <code>0</code> generate no timeline information."
        },
        {
          "displayName": "Timeout",
          "name": "timeout",
          "type": "number",
          "default": 86400,
          "description": "Number of seconds to keep this search after processing has stopped"
        },
        {
          "displayName": "Workload Pool",
          "name": "workload_pool",
          "type": "string",
          "default": "",
          "description": "New workload pool where the existing running search should be placed"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "search"
          ],
          "operation": [
            "create"
          ]
        }
      }
    },
    {
      "displayName": "Search Job",
      "name": "searchJobId",
      "type": "resourceLocator",
      "default": {
        "mode": "list",
        "value": ""
      },
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "search"
          ],
          "operation": [
            "deleteJob"
          ]
        }
      },
      "modes": [
        {
          "displayName": "From List",
          "name": "list",
          "type": "list",
          "placeholder": "Select a search job...",
          "typeOptions": {
            "searchListMethod": "searchJobs",
            "searchable": true
          }
        },
        {
          "displayName": "ID",
          "name": "id",
          "type": "string",
          "placeholder": "e.g. 1718944376.178"
        }
      ]
    },
    {
      "displayName": "Search Job",
      "name": "searchJobId",
      "type": "resourceLocator",
      "default": {
        "mode": "list",
        "value": ""
      },
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "search"
          ],
          "operation": [
            "get"
          ]
        }
      },
      "modes": [
        {
          "displayName": "From List",
          "name": "list",
          "type": "list",
          "placeholder": "Select a search job...",
          "typeOptions": {
            "searchListMethod": "searchJobs",
            "searchable": true
          }
        },
        {
          "displayName": "ID",
          "name": "id",
          "type": "string",
          "placeholder": "e.g. 1718944376.178"
        }
      ]
    },
    {
      "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": [
            "search"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 50,
      "description": "Max number of results to return",
      "displayOptions": {
        "show": {
          "returnAll": [
            false
          ],
          "resource": [
            "search"
          ],
          "operation": [
            "getAll"
          ]
        }
      },
      "typeOptions": {
        "minValue": 1
      }
    },
    {
      "displayName": "Sort",
      "name": "sort",
      "type": "fixedCollection",
      "default": {},
      "options": [
        {
          "displayName": "Values",
          "name": "values",
          "values": [
            {
              "displayName": "Sort Direction",
              "name": "sort_dir",
              "type": "options",
              "options": [
                {
                  "name": "Ascending",
                  "value": "asc"
                },
                {
                  "name": "Descending",
                  "value": "desc"
                }
              ],
              "default": "asc"
            },
            {
              "displayName": "Sort Key",
              "name": "sort_key",
              "description": "Key name to use for sorting",
              "type": "string",
              "placeholder": "e.g. diskUsage",
              "default": ""
            },
            {
              "displayName": "Sort Mode",
              "name": "sort_mode",
              "type": "options",
              "options": [
                {
                  "name": "Automatic",
                  "value": "auto",
                  "description": "If all field values are numeric, collate numerically. Otherwise, collate alphabetically."
                },
                {
                  "name": "Alphabetic",
                  "value": "alpha",
                  "description": "Collate alphabetically, case-insensitive"
                },
                {
                  "name": "Alphabetic and Case-Sensitive",
                  "value": "alpha_case",
                  "description": "Collate alphabetically, case-sensitive"
                },
                {
                  "name": "Numeric",
                  "value": "num",
                  "description": "Collate numerically"
                }
              ],
              "default": "auto"
            }
          ]
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "search"
          ],
          "operation": [
            "getAll"
          ]
        }
      }
    },
    {
      "displayName": "Search Job",
      "name": "searchJobId",
      "type": "resourceLocator",
      "default": {
        "mode": "list",
        "value": ""
      },
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "search"
          ],
          "operation": [
            "getResult"
          ]
        }
      },
      "modes": [
        {
          "displayName": "From List",
          "name": "list",
          "type": "list",
          "placeholder": "Select a search job...",
          "typeOptions": {
            "searchListMethod": "searchJobs",
            "searchable": true
          }
        },
        {
          "displayName": "ID",
          "name": "id",
          "type": "string",
          "placeholder": "e.g. 1718944376.178"
        }
      ]
    },
    {
      "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": [
            "search"
          ],
          "operation": [
            "getResult"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 50,
      "description": "Max number of results to return",
      "displayOptions": {
        "show": {
          "returnAll": [
            false
          ],
          "resource": [
            "search"
          ],
          "operation": [
            "getResult"
          ]
        }
      },
      "typeOptions": {
        "minValue": 1
      }
    },
    {
      "displayName": "Filters",
      "name": "filters",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Key-Value Match",
          "name": "keyValueMatch",
          "description": "Key-value pair to match against. Example: if \"Key\" is set to <code>user</code> and \"Field\" is set to <code>john</code>, only the results where <code>user</code> is <code>john</code> will be returned.",
          "type": "fixedCollection",
          "default": {},
          "placeholder": "Add Key-Value Pair",
          "options": [
            {
              "displayName": "Key-Value Pair",
              "name": "keyValuePair",
              "values": [
                {
                  "displayName": "Key",
                  "name": "key",
                  "description": "Key to match against",
                  "type": "string",
                  "default": ""
                },
                {
                  "displayName": "Value",
                  "name": "value",
                  "description": "Value to match against",
                  "type": "string",
                  "default": ""
                }
              ]
            }
          ]
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "search"
          ],
          "operation": [
            "getResult"
          ]
        }
      }
    },
    {
      "displayName": "Options",
      "name": "options",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Add Summary to Metadata",
          "name": "add_summary_to_metadata",
          "description": "Whether to include field summary statistics in the response",
          "type": "boolean",
          "default": false
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "search"
          ],
          "operation": [
            "getResult"
          ]
        }
      }
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "description": "Create an user",
          "action": "Create a user"
        },
        {
          "name": "Delete",
          "value": "deleteUser",
          "description": "Delete an user",
          "action": "Delete a user"
        },
        {
          "name": "Get",
          "value": "get",
          "description": "Retrieve an user",
          "action": "Get a user"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "description": "Retrieve many users",
          "action": "Get many users"
        },
        {
          "name": "Update",
          "value": "update",
          "description": "Update an user",
          "action": "Update a user"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Name",
      "name": "name",
      "type": "string",
      "default": "",
      "description": "Login name of the user",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ],
          "operation": [
            "create"
          ]
        }
      }
    },
    {
      "displayName": "Roles",
      "name": "roles",
      "type": "multiOptions",
      "default": [
        "user"
      ],
      "description": "Comma-separated list of roles to assign to the user. Choose from the list, or specify IDs using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>.",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ],
          "operation": [
            "create"
          ]
        }
      },
      "typeOptions": {
        "loadOptionsMethod": "getRoles"
      }
    },
    {
      "displayName": "Password",
      "name": "password",
      "type": "string",
      "default": "",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ],
          "operation": [
            "create"
          ]
        }
      },
      "typeOptions": {
        "password": true
      }
    },
    {
      "displayName": "Additional Fields",
      "name": "additionalFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Email",
          "name": "email",
          "type": "string",
          "placeholder": "name@email.com",
          "default": ""
        },
        {
          "displayName": "Full Name",
          "name": "realname",
          "type": "string",
          "default": "",
          "description": "Full name of the user"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ],
          "operation": [
            "create"
          ]
        }
      }
    },
    {
      "displayName": "User",
      "name": "userId",
      "type": "resourceLocator",
      "default": {
        "mode": "list",
        "value": ""
      },
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ],
          "operation": [
            "deleteUser"
          ]
        }
      },
      "modes": [
        {
          "displayName": "From List",
          "name": "list",
          "type": "list",
          "placeholder": "Select a user...",
          "typeOptions": {
            "searchListMethod": "searchUsers",
            "searchable": true
          }
        },
        {
          "displayName": "ID",
          "name": "id",
          "type": "string",
          "placeholder": "e.g. admin"
        }
      ]
    },
    {
      "displayName": "User",
      "name": "userId",
      "type": "resourceLocator",
      "default": {
        "mode": "list",
        "value": ""
      },
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ],
          "operation": [
            "get"
          ]
        }
      },
      "modes": [
        {
          "displayName": "From List",
          "name": "list",
          "type": "list",
          "placeholder": "Select a user...",
          "typeOptions": {
            "searchListMethod": "searchUsers",
            "searchable": true
          }
        },
        {
          "displayName": "ID",
          "name": "id",
          "type": "string",
          "placeholder": "e.g. admin"
        }
      ]
    },
    {
      "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": {
          "returnAll": [
            false
          ],
          "resource": [
            "user"
          ],
          "operation": [
            "getAll"
          ]
        }
      },
      "typeOptions": {
        "minValue": 1
      }
    },
    {
      "displayName": "User",
      "name": "userId",
      "type": "resourceLocator",
      "default": {
        "mode": "list",
        "value": ""
      },
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ],
          "operation": [
            "update"
          ]
        }
      },
      "modes": [
        {
          "displayName": "From List",
          "name": "list",
          "type": "list",
          "placeholder": "Select a user...",
          "typeOptions": {
            "searchListMethod": "searchUsers",
            "searchable": true
          }
        },
        {
          "displayName": "ID",
          "name": "id",
          "type": "string",
          "placeholder": "e.g. admin"
        }
      ]
    },
    {
      "displayName": "Update Fields",
      "name": "updateFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Email",
          "name": "email",
          "type": "string",
          "placeholder": "name@email.com",
          "default": ""
        },
        {
          "displayName": "Full Name",
          "name": "realname",
          "type": "string",
          "default": "",
          "description": "Full name of the user"
        },
        {
          "displayName": "Password",
          "name": "password",
          "type": "string",
          "typeOptions": {
            "password": true
          },
          "default": ""
        },
        {
          "displayName": "Role Names or IDs",
          "name": "roles",
          "type": "multiOptions",
          "description": "Comma-separated list of roles to assign to the user. Choose from the list, or specify IDs using an <a href=\"https://docs.n8n.io/code/expressions/\">expression</a>.",
          "default": [],
          "typeOptions": {
            "loadOptionsMethod": "getRoles"
          }
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ],
          "operation": [
            "update"
          ]
        }
      }
    }
  ]

operations:
  [
    {
      "operation": "getReport",
      "name": "Get Fired Alerts",
      "description": "Retrieve a fired alerts report",
      "resource": "alert"
    },
    {
      "operation": "getMetrics",
      "name": "Get Metrics",
      "description": "Retrieve metrics",
      "resource": "alert"
    },
    {
      "operation": "create",
      "name": "Create From Search",
      "description": "Create a search report from a search job",
      "resource": "report"
    },
    {
      "operation": "deleteReport",
      "name": "Delete",
      "description": "Delete a search report",
      "resource": "report"
    },
    {
      "operation": "get",
      "name": "Get",
      "description": "Retrieve a search report",
      "resource": "report"
    },
    {
      "operation": "getAll",
      "name": "Get Many",
      "description": "Retrieve many search reports",
      "resource": "report"
    },
    {
      "operation": "create",
      "name": "Create",
      "description": "Create a search job",
      "resource": "search"
    },
    {
      "operation": "deleteJob",
      "name": "Delete",
      "description": "Delete a search job",
      "resource": "search"
    },
    {
      "operation": "get",
      "name": "Get",
      "description": "Retrieve a search job",
      "resource": "search"
    },
    {
      "operation": "getAll",
      "name": "Get Many",
      "description": "Retrieve many search jobs",
      "resource": "search"
    },
    {
      "operation": "getResult",
      "name": "Get Result",
      "description": "Get the result of a search job",
      "resource": "search"
    },
    {
      "operation": "create",
      "name": "Create",
      "description": "Create an user",
      "resource": "user"
    },
    {
      "operation": "deleteUser",
      "name": "Delete",
      "description": "Delete an user",
      "resource": "user"
    },
    {
      "operation": "get",
      "name": "Get",
      "description": "Retrieve an user",
      "resource": "user"
    },
    {
      "operation": "getAll",
      "name": "Get Many",
      "description": "Retrieve many users",
      "resource": "user"
    },
    {
      "operation": "update",
      "name": "Update",
      "description": "Update an user",
      "resource": "user"
    }
  ]


node_type: nodes-base.spotifyTool
package_name: n8n-nodes-base
display_name: Spotify Tool
description: Access public song data via the Spotify API (AI Tool variant for use with AI Agents)
category: input
development_style: programmatic
version: 1
credentials_required:
  [
  {
  "name": "spotifyOAuth2Api",
  "required": true
  }
  ]

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

output_names:
  [
  "Tool"
  ]

updated_at: 2026-07-16 12:10:22
tool_variant_of: nodes-base.spotify
documentation:
  ---
  #https://www.notion.so/n8n/Frontmatter-432c2b8dff1f43d4b1c8d20075510fe4
  title: Spotify node documentation
  description: Learn how to use the Spotify node in n8n. Follow technical documentation to integrate Spotify node into your workflows.
  contentType: [integration, reference]
  priority: medium
  ---

  # Spotify node

  Use the Spotify node to automate work in Spotify, and integrate Spotify with other applications. n8n has built-in support for a wide range of Spotify features, including getting album and artist information. 

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

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

  ## Operations

  * Album
      * Get an album by URI or ID.
      * Get a list of new album releases.
      * Get an album's tracks by URI or ID.
      * Search albums by keyword.
  * Artist
      * Get an artist by URI or ID.
      * Get an artist's albums by URI or ID.
      * Get an artist's related artists by URI or ID.
      * Get an artist's top tracks by URI or ID.
      * Search artists by keyword.
  * Library
      * Get the user's liked tracks.
  * My Data
      * Get your followed artists.
  * Player
      * Add a song to your queue.
      * Get your currently playing track.
      * Skip to your next track.
      * Pause your music.
      * Skip to your previous song.
      * Get your recently played tracks.
      * Resume playback on the current active device.
      * Set volume on the current active device.
      * Start playing a playlist, artist, or album.
  * Playlist
      * Add tracks from a playlist by track and playlist URI or ID.
      * Create a new playlist.
      * Get a playlist by URI or ID.
      * Get a playlist's tracks by URI or ID.
      * Get a user's playlists.
      * Remove tracks from a playlist by track and playlist URI or ID.
      * Search playlists by keyword.
  * Track
      * Get a track by its URI or ID.
      * Get audio features for a track by URI or ID.
      * Search tracks by keyword

  ## Templates and examples

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

  --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 Spotify"
    },
    {
      "displayName": "Resource",
      "name": "resource",
      "type": "options",
      "default": "player",
      "options": [
        {
          "name": "Album",
          "value": "album"
        },
        {
          "name": "Artist",
          "value": "artist"
        },
        {
          "name": "Library",
          "value": "library"
        },
        {
          "name": "My Data",
          "value": "myData"
        },
        {
          "name": "Player",
          "value": "player"
        },
        {
          "name": "Playlist",
          "value": "playlist"
        },
        {
          "name": "Track",
          "value": "track"
        }
      ],
      "noDataExpression": true
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "addSongToQueue",
      "options": [
        {
          "name": "Add Song to Queue",
          "value": "addSongToQueue",
          "description": "Add a song to your queue",
          "action": "Add a song to a queue"
        },
        {
          "name": "Currently Playing",
          "value": "currentlyPlaying",
          "description": "Get your currently playing track",
          "action": "Get the currently playing track"
        },
        {
          "name": "Next Song",
          "value": "nextSong",
          "description": "Skip to your next track",
          "action": "Skip to the next track"
        },
        {
          "name": "Pause",
          "value": "pause",
          "description": "Pause your music",
          "action": "Pause the player"
        },
        {
          "name": "Previous Song",
          "value": "previousSong",
          "description": "Skip to your previous song",
          "action": "Skip to the previous song"
        },
        {
          "name": "Recently Played",
          "value": "recentlyPlayed",
          "description": "Get your recently played tracks",
          "action": "Get the recently played tracks"
        },
        {
          "name": "Resume",
          "value": "resume",
          "description": "Resume playback on the current active device",
          "action": "Resume the player"
        },
        {
          "name": "Set Volume",
          "value": "volume",
          "description": "Set volume on the current active device",
          "action": "Set volume on the player"
        },
        {
          "name": "Start Music",
          "value": "startMusic",
          "description": "Start playing a playlist, artist, or album",
          "action": "Start music on the player"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "player"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Resource ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "Enter a playlist, artist, or album URI or ID",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "player"
          ],
          "operation": [
            "startMusic"
          ]
        }
      }
    },
    {
      "displayName": "Track ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "Enter a track URI or ID",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "player"
          ],
          "operation": [
            "addSongToQueue"
          ]
        }
      }
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "description": "Get an album by URI or ID",
          "action": "Get an album"
        },
        {
          "name": "Get New Releases",
          "value": "getNewReleases",
          "description": "Get a list of new album releases",
          "action": "Get new album releases"
        },
        {
          "name": "Get Tracks",
          "value": "getTracks",
          "description": "Get an album's tracks by URI or ID",
          "action": "Get an album's tracks by URI or ID"
        },
        {
          "name": "Search",
          "value": "search",
          "description": "Search albums by keyword",
          "action": "Search albums by keyword"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "album"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Album ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The album's Spotify URI or ID",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "album"
          ],
          "operation": [
            "get",
            "getTracks"
          ]
        },
        "hide": {
          "operation": [
            "search"
          ]
        }
      }
    },
    {
      "displayName": "Search Keyword",
      "name": "query",
      "type": "string",
      "default": "",
      "description": "The keyword term to search for",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "album"
          ],
          "operation": [
            "search"
          ]
        }
      }
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "description": "Get an artist by URI or ID",
          "action": "Get an artist"
        },
        {
          "name": "Get Albums",
          "value": "getAlbums",
          "description": "Get an artist's albums by URI or ID",
          "action": "Get an artist's albums by URI or ID"
        },
        {
          "name": "Get Related Artists",
          "value": "getRelatedArtists",
          "description": "Get an artist's related artists by URI or ID",
          "action": "Get an artist's related artists by URI or ID"
        },
        {
          "name": "Get Top Tracks",
          "value": "getTopTracks",
          "description": "Get an artist's top tracks by URI or ID",
          "action": "Get an artist's top tracks by URI or ID"
        },
        {
          "name": "Search",
          "value": "search",
          "description": "Search artists by keyword",
          "action": "Search artists by keyword"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "artist"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Artist ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The artist's Spotify URI or ID",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "artist"
          ]
        },
        "hide": {
          "operation": [
            "search"
          ]
        }
      }
    },
    {
      "displayName": "Country",
      "name": "country",
      "type": "string",
      "default": "US",
      "description": "Top tracks in which country? Enter the postal abbreviation",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "artist"
          ],
          "operation": [
            "getTopTracks"
          ]
        }
      }
    },
    {
      "displayName": "Search Keyword",
      "name": "query",
      "type": "string",
      "default": "",
      "description": "The keyword term to search for",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "artist"
          ],
          "operation": [
            "search"
          ]
        }
      }
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "add",
      "options": [
        {
          "name": "Add an Item",
          "value": "add",
          "description": "Add tracks to a playlist by track and playlist URI or ID",
          "action": "Add an Item to a playlist"
        },
        {
          "name": "Create a Playlist",
          "value": "create",
          "description": "Create a new playlist",
          "action": "Create a playlist"
        },
        {
          "name": "Get",
          "value": "get",
          "description": "Get a playlist by URI or ID",
          "action": "Get a playlist"
        },
        {
          "name": "Get the User's Playlists",
          "value": "getUserPlaylists",
          "description": "Get a user's playlists",
          "action": "Get a user's playlists"
        },
        {
          "name": "Get Tracks",
          "value": "getTracks",
          "description": "Get a playlist's tracks by URI or ID",
          "action": "Get a playlist's tracks by URI or ID"
        },
        {
          "name": "Remove an Item",
          "value": "delete",
          "description": "Remove tracks from a playlist by track and playlist URI or ID",
          "action": "Remove an item from a playlist"
        },
        {
          "name": "Search",
          "value": "search",
          "description": "Search playlists by keyword",
          "action": "Search playlists by keyword"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "playlist"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Playlist ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The playlist's Spotify URI or its ID",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "playlist"
          ],
          "operation": [
            "add",
            "delete",
            "get",
            "getTracks"
          ]
        }
      }
    },
    {
      "displayName": "Name",
      "name": "name",
      "type": "string",
      "default": "",
      "description": "Name of the playlist to create",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "playlist"
          ],
          "operation": [
            "create"
          ]
        }
      }
    },
    {
      "displayName": "Additional Fields",
      "name": "additionalFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Description",
          "name": "description",
          "type": "string",
          "default": "",
          "placeholder": "These are all my favorite songs.",
          "description": "Description for the playlist to create"
        },
        {
          "displayName": "Public",
          "name": "public",
          "type": "boolean",
          "default": true,
          "description": "Whether the playlist is publicly accessible"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "playlist"
          ],
          "operation": [
            "create"
          ]
        }
      }
    },
    {
      "displayName": "Track ID",
      "name": "trackID",
      "type": "string",
      "default": "",
      "description": "The track's Spotify URI or its ID. The track to add/delete from the playlist.",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "playlist"
          ],
          "operation": [
            "add",
            "delete"
          ]
        }
      }
    },
    {
      "displayName": "Additional Fields",
      "name": "additionalFields",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Position",
          "name": "position",
          "type": "number",
          "typeOptions": {
            "minValue": 0
          },
          "default": 0,
          "placeholder": "0",
          "description": "The new track's position in the playlist"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "playlist"
          ],
          "operation": [
            "add"
          ]
        }
      }
    },
    {
      "displayName": "Search Keyword",
      "name": "query",
      "type": "string",
      "default": "",
      "description": "The keyword term to search for",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "playlist"
          ],
          "operation": [
            "search"
          ]
        }
      }
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "track",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "description": "Get a track by its URI or ID",
          "action": "Get a track"
        },
        {
          "name": "Get Audio Features",
          "value": "getAudioFeatures",
          "description": "Get audio features for a track by URI or ID",
          "action": "Get audio features of a track"
        },
        {
          "name": "Search",
          "value": "search",
          "description": "Search tracks by keyword",
          "action": "Search tracks by keyword"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "track"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Track ID",
      "name": "id",
      "type": "string",
      "default": "",
      "description": "The track's Spotify URI or ID",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "track"
          ]
        },
        "hide": {
          "operation": [
            "search"
          ]
        }
      }
    },
    {
      "displayName": "Search Keyword",
      "name": "query",
      "type": "string",
      "default": "",
      "description": "The keyword term to search for",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "track"
          ],
          "operation": [
            "search"
          ]
        }
      }
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "getLikedTracks",
      "options": [
        {
          "name": "Get Liked Tracks",
          "value": "getLikedTracks",
          "description": "Get the user's liked tracks",
          "action": "Get liked tracks"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "library"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Operation",
      "name": "operation",
      "type": "options",
      "default": "getFollowingArtists",
      "options": [
        {
          "name": "Get Following Artists",
          "value": "getFollowingArtists",
          "description": "Get your followed artists",
          "action": "Get your followed artists"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "myData"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "displayName": "Return All",
      "name": "returnAll",
      "type": "boolean",
      "default": false,
      "description": "Whether to return all results or only up to a given limit",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "album",
            "artist",
            "library",
            "myData",
            "playlist",
            "track",
            "player"
          ],
          "operation": [
            "getTracks",
            "getAlbums",
            "getUserPlaylists",
            "getNewReleases",
            "getLikedTracks",
            "getFollowingArtists",
            "search",
            "recentlyPlayed"
          ]
        }
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 50,
      "description": "Max number of results to return",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "album",
            "artist",
            "library",
            "playlist",
            "track"
          ],
          "operation": [
            "getTracks",
            "getAlbums",
            "getUserPlaylists",
            "getNewReleases",
            "getLikedTracks",
            "search"
          ],
          "returnAll": [
            false
          ]
        }
      },
      "typeOptions": {
        "minValue": 1,
        "maxValue": 100
      }
    },
    {
      "displayName": "Limit",
      "name": "limit",
      "type": "number",
      "default": 50,
      "description": "Max number of results to return",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "myData",
            "player"
          ],
          "operation": [
            "getFollowingArtists",
            "recentlyPlayed"
          ],
          "returnAll": [
            false
          ]
        }
      },
      "typeOptions": {
        "minValue": 1,
        "maxValue": 50
      }
    },
    {
      "displayName": "Volume",
      "name": "volumePercent",
      "type": "number",
      "default": 50,
      "description": "The volume percentage to set",
      "required": true,
      "displayOptions": {
        "show": {
          "resource": [
            "player"
          ],
          "operation": [
            "volume"
          ]
        }
      },
      "typeOptions": {
        "minValue": 0,
        "maxValue": 100
      }
    },
    {
      "displayName": "Filters",
      "name": "filters",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Country",
          "name": "country",
          "type": "options",
          "default": "US",
          "options": [
            {
              "name": "Afghanistan",
              "value": "AF"
            },
            {
              "name": "Åland Islands",
              "value": "AX"
            },
            {
              "name": "Albania",
              "value": "AL"
            },
            {
              "name": "Algeria",
              "value": "DZ"
            },
            {
              "name": "American Samoa",
              "value": "AS"
            },
            {
              "name": "Andorra",
              "value": "AD"
            },
            {
              "name": "Angola",
              "value": "AO"
            },
            {
              "name": "Anguilla",
              "value": "AI"
            },
            {
              "name": "Antarctica",
              "value": "AQ"
            },
            {
              "name": "Antigua and Barbuda",
              "value": "AG"
            },
            {
              "name": "Argentina",
              "value": "AR"
            },
            {
              "name": "Armenia",
              "value": "AM"
            },
            {
              "name": "Aruba",
              "value": "AW"
            },
            {
              "name": "Australia",
              "value": "AU"
            },
            {
              "name": "Austria",
              "value": "AT"
            },
            {
              "name": "Azerbaijan",
              "value": "AZ"
            },
            {
              "name": "Bahamas (the)",
              "value": "BS"
            },
            {
              "name": "Bahrain",
              "value": "BH"
            },
            {
              "name": "Bangladesh",
              "value": "BD"
            },
            {
              "name": "Barbados",
              "value": "BB"
            },
            {
              "name": "Belarus",
              "value": "BY"
            },
            {
              "name": "Belgium",
              "value": "BE"
            },
            {
              "name": "Belize",
              "value": "BZ"
            },
            {
              "name": "Benin",
              "value": "BJ"
            },
            {
              "name": "Bermuda",
              "value": "BM"
            },
            {
              "name": "Bhutan",
              "value": "BT"
            },
            {
              "name": "Bolivia (Plurinational State of)",
              "value": "BO"
            },
            {
              "name": "Bonaire, Sint Eustatius and Saba",
              "value": "BQ"
            },
            {
              "name": "Bosnia and Herzegovina",
              "value": "BA"
            },
            {
              "name": "Botswana",
              "value": "BW"
            },
            {
              "name": "Bouvet Island",
              "value": "BV"
            },
            {
              "name": "Brazil",
              "value": "BR"
            },
            {
              "name": "British Indian Ocean Territory (the)",
              "value": "IO"
            },
            {
              "name": "Brunei Darussalam",
              "value": "BN"
            },
            {
              "name": "Bulgaria",
              "value": "BG"
            },
            {
              "name": "Burkina Faso",
              "value": "BF"
            },
            {
              "name": "Burundi",
              "value": "BI"
            },
            {
              "name": "Cabo Verde",
              "value": "CV"
            },
            {
              "name": "Cambodia",
              "value": "KH"
            },
            {
              "name": "Cameroon",
              "value": "CM"
            },
            {
              "name": "Canada",
              "value": "CA"
            },
            {
              "name": "Cayman Islands (the)",
              "value": "KY"
            },
            {
              "name": "Central African Republic (the)",
              "value": "CF"
            },
            {
              "name": "Chad",
              "value": "TD"
            },
            {
              "name": "Chile",
              "value": "CL"
            },
            {
              "name": "China",
              "value": "CN"
            },
            {
              "name": "Christmas Island",
              "value": "CX"
            },
            {
              "name": "Cocos (Keeling) Islands (the)",
              "value": "CC"
            },
            {
              "name": "Colombia",
              "value": "CO"
            },
            {
              "name": "Comoros (the)",
              "value": "KM"
            },
            {
              "name": "Congo (the Democratic Republic of the)",
              "value": "CD"
            },
            {
              "name": "Congo (the)",
              "value": "CG"
            },
            {
              "name": "Cook Islands (the)",
              "value": "CK"
            },
            {
              "name": "Costa Rica",
              "value": "CR"
            },
            {
              "name": "Côte d'Ivoire",
              "value": "CI"
            },
            {
              "name": "Croatia",
              "value": "HR"
            },
            {
              "name": "Cuba",
              "value": "CU"
            },
            {
              "name": "Curaçao",
              "value": "CW"
            },
            {
              "name": "Cyprus",
              "value": "CY"
            },
            {
              "name": "Czechia",
              "value": "CZ"
            },
            {
              "name": "Denmark",
              "value": "DK"
            },
            {
              "name": "Djibouti",
              "value": "DJ"
            },
            {
              "name": "Dominica",
              "value": "DM"
            },
            {
              "name": "Dominican Republic (the)",
              "value": "DO"
            },
            {
              "name": "Ecuador",
              "value": "EC"
            },
            {
              "name": "Egypt",
              "value": "EG"
            },
            {
              "name": "El Salvador",
              "value": "SV"
            },
            {
              "name": "Equatorial Guinea",
              "value": "GQ"
            },
            {
              "name": "Eritrea",
              "value": "ER"
            },
            {
              "name": "Estonia",
              "value": "EE"
            },
            {
              "name": "Ethiopia",
              "value": "ET"
            },
            {
              "name": "Falkland Islands (the) [Malvinas]",
              "value": "FK"
            },
            {
              "name": "Faroe Islands (the)",
              "value": "FO"
            },
            {
              "name": "Fiji",
              "value": "FJ"
            },
            {
              "name": "Finland",
              "value": "FI"
            },
            {
              "name": "France",
              "value": "FR"
            },
            {
              "name": "French Guiana",
              "value": "GF"
            },
            {
              "name": "French Polynesia",
              "value": "PF"
            },
            {
              "name": "French Southern Territories (the)",
              "value": "TF"
            },
            {
              "name": "Gabon",
              "value": "GA"
            },
            {
              "name": "Gambia (the)",
              "value": "GM"
            },
            {
              "name": "Georgia",
              "value": "GE"
            },
            {
              "name": "Germany",
              "value": "DE"
            },
            {
              "name": "Ghana",
              "value": "GH"
            },
            {
              "name": "Gibraltar",
              "value": "GI"
            },
            {
              "name": "Greece",
              "value": "GR"
            },
            {
              "name": "Greenland",
              "value": "GL"
            },
            {
              "name": "Grenada",
              "value": "GD"
            },
            {
              "name": "Guadeloupe",
              "value": "GP"
            },
            {
              "name": "Guam",
              "value": "GU"
            },
            {
              "name": "Guatemala",
              "value": "GT"
            },
            {
              "name": "Guernsey",
              "value": "GG"
            },
            {
              "name": "Guinea",
              "value": "GN"
            },
            {
              "name": "Guinea-Bissau",
              "value": "GW"
            },
            {
              "name": "Guyana",
              "value": "GY"
            },
            {
              "name": "Haiti",
              "value": "HT"
            },
            {
              "name": "Heard Island and McDonald Islands",
              "value": "HM"
            },
            {
              "name": "Holy See (the)",
              "value": "VA"
            },
            {
              "name": "Honduras",
              "value": "HN"
            },
            {
              "name": "Hong Kong",
              "value": "HK"
            },
            {
              "name": "Hungary",
              "value": "HU"
            },
            {
              "name": "Iceland",
              "value": "IS"
            },
            {
              "name": "India",
              "value": "IN"
            },
            {
              "name": "Indonesia",
              "value": "ID"
            },
            {
              "name": "Iran (Islamic Republic of)",
              "value": "IR"
            },
            {
              "name": "Iraq",
              "value": "IQ"
            },
            {
              "name": "Ireland",
              "value": "IE"
            },
            {
              "name": "Isle of Man",
              "value": "IM"
            },
            {
              "name": "Israel",
              "value": "IL"
            },
            {
              "name": "Italy",
              "value": "IT"
            },
            {
              "name": "Jamaica",
              "value": "JM"
            },
            {
              "name": "Japan",
              "value": "JP"
            },
            {
              "name": "Jersey",
              "value": "JE"
            },
            {
              "name": "Jordan",
              "value": "JO"
            },
            {
              "name": "Kazakhstan",
              "value": "KZ"
            },
            {
              "name": "Kenya",
              "value": "KE"
            },
            {
              "name": "Kiribati",
              "value": "KI"
            },
            {
              "name": "Korea (the Democratic People's Republic of)",
              "value": "KP"
            },
            {
              "name": "Korea (the Republic of)",
              "value": "KR"
            },
            {
              "name": "Kuwait",
              "value": "KW"
            },
            {
              "name": "Kyrgyzstan",
              "value": "KG"
            },
            {
              "name": "Lao People's Democratic Republic (the)",
              "value": "LA"
            },
            {
              "name": "Latvia",
              "value": "LV"
            },
            {
              "name": "Lebanon",
              "value": "LB"
            },
            {
              "name": "Lesotho",
              "value": "LS"
            },
            {
              "name": "Liberia",
              "value": "LR"
            },
            {
              "name": "Libya",
              "value": "LY"
            },
            {
              "name": "Liechtenstein",
              "value": "LI"
            },
            {
              "name": "Lithuania",
              "value": "LT"
            },
            {
              "name": "Luxembourg",
              "value": "LU"
            },
            {
              "name": "Macao",
              "value": "MO"
            },
            {
              "name": "Macedonia (the former Yugoslav Republic of)",
              "value": "MK"
            },
            {
              "name": "Madagascar",
              "value": "MG"
            },
            {
              "name": "Malawi",
              "value": "MW"
            },
            {
              "name": "Malaysia",
              "value": "MY"
            },
            {
              "name": "Maldives",
              "value": "MV"
            },
            {
              "name": "Mali",
              "value": "ML"
            },
            {
              "name": "Malta",
              "value": "MT"
            },
            {
              "name": "Marshall Islands (the)",
              "value": "MH"
            },
            {
              "name": "Martinique",
              "value": "MQ"
            },
            {
              "name": "Mauritania",
              "value": "MR"
            },
            {
              "name": "Mauritius",
              "value": "MU"
            },
            {
              "name": "Mayotte",
              "value": "YT"
            },
            {
              "name": "Mexico",
              "value": "MX"
            },
            {
              "name": "Micronesia (Federated States of)",
              "value": "FM"
            },
            {
              "name": "Moldova (the Republic of)",
              "value": "MD"
            },
            {
              "name": "Monaco",
              "value": "MC"
            },
            {
              "name": "Mongolia",
              "value": "MN"
            },
            {
              "name": "Montenegro",
              "value": "ME"
            },
            {
              "name": "Montserrat",
              "value": "MS"
            },
            {
              "name": "Morocco",
              "value": "MA"
            },
            {
              "name": "Mozambique",
              "value": "MZ"
            },
            {
              "name": "Myanmar",
              "value": "MM"
            },
            {
              "name": "Namibia",
              "value": "NA"
            },
            {
              "name": "Nauru",
              "value": "NR"
            },
            {
              "name": "Nepal",
              "value": "NP"
            },
            {
              "name": "Netherlands (the)",
              "value": "NL"
            },
            {
              "name": "New Caledonia",
              "value": "NC"
            },
            {
              "name": "New Zealand",
              "value": "NZ"
            },
            {
              "name": "Nicaragua",
              "value": "NI"
            },
            {
              "name": "Niger (the)",
              "value": "NE"
            },
            {
              "name": "Nigeria",
              "value": "NG"
            },
            {
              "name": "Niue",
              "value": "NU"
            },
            {
              "name": "Norfolk Island",
              "value": "NF"
            },
            {
              "name": "Northern Mariana Islands (the)",
              "value": "MP"
            },
            {
              "name": "Norway",
              "value": "NO"
            },
            {
              "name": "Oman",
              "value": "OM"
            },
            {
              "name": "Pakistan",
              "value": "PK"
            },
            {
              "name": "Palau",
              "value": "PW"
            },
            {
              "name": "Palestine, State of",
              "value": "PS"
            },
            {
              "name": "Panama",
              "value": "PA"
            },
            {
              "name": "Papua New Guinea",
              "value": "PG"
            },
            {
              "name": "Paraguay",
              "value": "PY"
            },
            {
              "name": "Peru",
              "value": "PE"
            },
            {
              "name": "Philippines (the)",
              "value": "PH"
            },
            {
              "name": "Pitcairn",
              "value": "PN"
            },
            {
              "name": "Poland",
              "value": "PL"
            },
            {
              "name": "Portugal",
              "value": "PT"
            },
            {
              "name": "Puerto Rico",
              "value": "PR"
            },
            {
              "name": "Qatar",
              "value": "QA"
            },
            {
              "name": "Réunion",
              "value": "RE"
            },
            {
              "name": "Romania",
              "value": "RO"
            },
            {
              "name": "Russian Federation (the)",
              "value": "RU"
            },
            {
              "name": "Rwanda",
              "value": "RW"
            },
            {
              "name": "Saint Barthélemy",
              "value": "BL"
            },
            {
              "name": "Saint Helena, Ascension and Tristan da Cunha",
              "value": "SH"
            },
            {
              "name": "Saint Kitts and Nevis",
              "value": "KN"
            },
            {
              "name": "Saint Lucia",
              "value": "LC"
            },
            {
              "name": "Saint Martin (French part)",
              "value": "MF"
            },
            {
              "name": "Saint Pierre and Miquelon",
              "value": "PM"
            },
            {
              "name": "Saint Vincent and the Grenadines",
              "value": "VC"
            },
            {
              "name": "Samoa",
              "value": "WS"
            },
            {
              "name": "San Marino",
              "value": "SM"
            },
            {
              "name": "Sao Tome and Principe",
              "value": "ST"
            },
            {
              "name": "Saudi Arabia",
              "value": "SA"
            },
            {
              "name": "Senegal",
              "value": "SN"
            },
            {
              "name": "Serbia",
              "value": "RS"
            },
            {
              "name": "Seychelles",
              "value": "SC"
            },
            {
              "name": "Sierra Leone",
              "value": "SL"
            },
            {
              "name": "Singapore",
              "value": "SG"
            },
            {
              "name": "Sint Maarten (Dutch part)",
              "value": "SX"
            },
            {
              "name": "Slovakia",
              "value": "SK"
            },
            {
              "name": "Slovenia",
              "value": "SI"
            },
            {
              "name": "Solomon Islands",
              "value": "SB"
            },
            {
              "name": "Somalia",
              "value": "SO"
            },
            {
              "name": "South Africa",
              "value": "ZA"
            },
            {
              "name": "South Georgia and the South Sandwich Islands",
              "value": "GS"
            },
            {
              "name": "South Sudan",
              "value": "SS"
            },
            {
              "name": "Spain",
              "value": "ES"
            },
            {
              "name": "Sri Lanka",
              "value": "LK"
            },
            {
              "name": "Sudan (the)",
              "value": "SD"
            },
            {
              "name": "Suriname",
              "value": "SR"
            },
            {
              "name": "Svalbard and Jan Mayen",
              "value": "SJ"
            },
            {
              "name": "Swaziland",
              "value": "SZ"
            },
            {
              "name": "Sweden",
              "value": "SE"
            },
            {
              "name": "Switzerland",
              "value": "CH"
            },
            {
              "name": "Syrian Arab Republic",
              "value": "SY"
            },
            {
              "name": "Taiwan (Province of China)",
              "value": "TW"
            },
            {
              "name": "Tajikistan",
              "value": "TJ"
            },
            {
              "name": "Tanzania, United Republic of",
              "value": "TZ"
            },
            {
              "name": "Thailand",
              "value": "TH"
            },
            {
              "name": "Timor-Leste",
              "value": "TL"
            },
            {
              "name": "Togo",
              "value": "TG"
            },
            {
              "name": "Tokelau",
              "value": "TK"
            },
            {
              "name": "Tonga",
              "value": "TO"
            },
            {
              "name": "Trinidad and Tobago",
              "value": "TT"
            },
            {
              "name": "Tunisia",
              "value": "TN"
            },
            {
              "name": "Turkey",
              "value": "TR"
            },
            {
              "name": "Turkmenistan",
              "value": "TM"
            },
            {
              "name": "Turks and Caicos Islands (the)",
              "value": "TC"
            },
            {
              "name": "Tuvalu",
              "value": "TV"
            },
            {
              "name": "Uganda",
              "value": "UG"
            },
            {
              "name": "Ukraine",
              "value": "UA"
            },
            {
              "name": "United Arab Emirates (the)",
              "value": "AE"
            },
            {
              "name": "United Kingdom of Great Britain and Northern Ireland (the)",
              "value": "GB"
            },
            {
              "name": "United States Minor Outlying Islands (the)",
              "value": "UM"
            },
            {
              "name": "United States of America (the)",
              "value": "US"
            },
            {
              "name": "Uruguay",
              "value": "UY"
            },
            {
              "name": "Uzbekistan",
              "value": "UZ"
            },
            {
              "name": "Vanuatu",
              "value": "VU"
            },
            {
              "name": "Venezuela (Bolivarian Republic of)",
              "value": "VE"
            },
            {
              "name": "Viet Nam",
              "value": "VN"
            },
            {
              "name": "Virgin Islands (British)",
              "value": "VG"
            },
            {
              "name": "Virgin Islands (U.S.)",
              "value": "VI"
            },
            {
              "name": "Wallis and Futuna",
              "value": "WF"
            },
            {
              "name": "Western Sahara*",
              "value": "EH"
            },
            {
              "name": "Yemen",
              "value": "YE"
            },
            {
              "name": "Zambia",
              "value": "ZM"
            },
            {
              "name": "Zimbabwe",
              "value": "ZW"
            }
          ],
          "description": "Country to filter new releases by"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "album"
          ],
          "operation": [
            "getNewReleases"
          ]
        }
      }
    },
    {
      "displayName": "Filters",
      "name": "filters",
      "type": "collection",
      "default": {},
      "options": [
        {
          "displayName": "Country",
          "name": "market",
          "type": "options",
          "options": [
            {
              "name": "Afghanistan",
              "value": "AF"
            },
            {
              "name": "Åland Islands",
              "value": "AX"
            },
            {
              "name": "Albania",
              "value": "AL"
            },
            {
              "name": "Algeria",
              "value": "DZ"
            },
            {
              "name": "American Samoa",
              "value": "AS"
            },
            {
              "name": "Andorra",
              "value": "AD"
            },
            {
              "name": "Angola",
              "value": "AO"
            },
            {
              "name": "Anguilla",
              "value": "AI"
            },
            {
              "name": "Antarctica",
              "value": "AQ"
            },
            {
              "name": "Antigua and Barbuda",
              "value": "AG"
            },
            {
              "name": "Argentina",
              "value": "AR"
            },
            {
              "name": "Armenia",
              "value": "AM"
            },
            {
              "name": "Aruba",
              "value": "AW"
            },
            {
              "name": "Australia",
              "value": "AU"
            },
            {
              "name": "Austria",
              "value": "AT"
            },
            {
              "name": "Azerbaijan",
              "value": "AZ"
            },
            {
              "name": "Bahamas (the)",
              "value": "BS"
            },
            {
              "name": "Bahrain",
              "value": "BH"
            },
            {
              "name": "Bangladesh",
              "value": "BD"
            },
            {
              "name": "Barbados",
              "value": "BB"
            },
            {
              "name": "Belarus",
              "value": "BY"
            },
            {
              "name": "Belgium",
              "value": "BE"
            },
            {
              "name": "Belize",
              "value": "BZ"
            },
            {
              "name": "Benin",
              "value": "BJ"
            },
            {
              "name": "Bermuda",
              "value": "BM"
            },
            {
              "name": "Bhutan",
              "value": "BT"
            },
            {
              "name": "Bolivia (Plurinational State of)",
              "value": "BO"
            },
            {
              "name": "Bonaire, Sint Eustatius and Saba",
              "value": "BQ"
            },
            {
              "name": "Bosnia and Herzegovina",
              "value": "BA"
            },
            {
              "name": "Botswana",
              "value": "BW"
            },
            {
              "name": "Bouvet Island",
              "value": "BV"
            },
            {
              "name": "Brazil",
              "value": "BR"
            },
            {
              "name": "British Indian Ocean Territory (the)",
              "value": "IO"
            },
            {
              "name": "Brunei Darussalam",
              "value": "BN"
            },
            {
              "name": "Bulgaria",
              "value": "BG"
            },
            {
              "name": "Burkina Faso",
              "value": "BF"
            },
            {
              "name": "Burundi",
              "value": "BI"
            },
            {
              "name": "Cabo Verde",
              "value": "CV"
            },
            {
              "name": "Cambodia",
              "value": "KH"
            },
            {
              "name": "Cameroon",
              "value": "CM"
            },
            {
              "name": "Canada",
              "value": "CA"
            },
            {
              "name": "Cayman Islands (the)",
              "value": "KY"
            },
            {
              "name": "Central African Republic (the)",
              "value": "CF"
            },
            {
              "name": "Chad",
              "value": "TD"
            },
            {
              "name": "Chile",
              "value": "CL"
            },
            {
              "name": "China",
              "value": "CN"
            },
            {
              "name": "Christmas Island",
              "value": "CX"
            },
            {
              "name": "Cocos (Keeling) Islands (the)",
              "value": "CC"
            },
            {
              "name": "Colombia",
              "value": "CO"
            },
            {
              "name": "Comoros (the)",
              "value": "KM"
            },
            {
              "name": "Congo (the Democratic Republic of the)",
              "value": "CD"
            },
            {
              "name": "Congo (the)",
              "value": "CG"
            },
            {
              "name": "Cook Islands (the)",
              "value": "CK"
            },
            {
              "name": "Costa Rica",
              "value": "CR"
            },
            {
              "name": "Côte d'Ivoire",
              "value": "CI"
            },
            {
              "name": "Croatia",
              "value": "HR"
            },
            {
              "name": "Cuba",
              "value": "CU"
            },
            {
              "name": "Curaçao",
              "value": "CW"
            },
            {
              "name": "Cyprus",
              "value": "CY"
            },
            {
              "name": "Czechia",
              "value": "CZ"
            },
            {
              "name": "Denmark",
              "value": "DK"
            },
            {
              "name": "Djibouti",
              "value": "DJ"
            },
            {
              "name": "Dominica",
              "value": "DM"
            },
            {
              "name": "Dominican Republic (the)",
              "value": "DO"
            },
            {
              "name": "Ecuador",
              "value": "EC"
            },
            {
              "name": "Egypt",
              "value": "EG"
            },
            {
              "name": "El Salvador",
              "value": "SV"
            },
            {
              "name": "Equatorial Guinea",
              "value": "GQ"
            },
            {
              "name": "Eritrea",
              "value": "ER"
            },
            {
              "name": "Estonia",
              "value": "EE"
            },
            {
              "name": "Ethiopia",
              "value": "ET"
            },
            {
              "name": "Falkland Islands (the) [Malvinas]",
              "value": "FK"
            },
            {
              "name": "Faroe Islands (the)",
              "value": "FO"
            },
            {
              "name": "Fiji",
              "value": "FJ"
            },
            {
              "name": "Finland",
              "value": "FI"
            },
            {
              "name": "France",
              "value": "FR"
            },
            {
              "name": "French Guiana",
              "value": "GF"
            },
            {
              "name": "French Polynesia",
              "value": "PF"
            },
            {
              "name": "French Southern Territories (the)",
              "value": "TF"
            },
            {
              "name": "Gabon",
              "value": "GA"
            },
            {
              "name": "Gambia (the)",
              "value": "GM"
            },
            {
              "name": "Georgia",
              "value": "GE"
            },
            {
              "name": "Germany",
              "value": "DE"
            },
            {
              "name": "Ghana",
              "value": "GH"
            },
            {
              "name": "Gibraltar",
              "value": "GI"
            },
            {
              "name": "Greece",
              "value": "GR"
            },
            {
              "name": "Greenland",
              "value": "GL"
            },
            {
              "name": "Grenada",
              "value": "GD"
            },
            {
              "name": "Guadeloupe",
              "value": "GP"
            },
            {
              "name": "Guam",
              "value": "GU"
            },
            {
              "name": "Guatemala",
              "value": "GT"
            },
            {
              "name": "Guernsey",
              "value": "GG"
            },
            {
              "name": "Guinea",
              "value": "GN"
            },
            {
              "name": "Guinea-Bissau",
              "value": "GW"
            },
            {
              "name": "Guyana",
              "value": "GY"
            },
            {
              "name": "Haiti",
              "value": "HT"
            },
            {
              "name": "Heard Island and McDonald Islands",
              "value": "HM"
            },
            {
              "name": "Holy See (the)",
              "value": "VA"
            },
            {
              "name": "Honduras",
              "value": "HN"
            },
            {
              "name": "Hong Kong",
              "value": "HK"
            },
            {
              "name": "Hungary",
              "value": "HU"
            },
            {
              "name": "Iceland",
              "value": "IS"
            },
            {
              "name": "India",
              "value": "IN"
            },
            {
              "name": "Indonesia",
              "value": "ID"
            },
            {
              "name": "Iran (Islamic Republic of)",
              "value": "IR"
            },
            {
              "name": "Iraq",
              "value": "IQ"
            },
            {
              "name": "Ireland",
              "value": "IE"
            },
            {
              "name": "Isle of Man",
              "value": "IM"
            },
            {
              "name": "Israel",
              "value": "IL"
            },
            {
              "name": "Italy",
              "value": "IT"
            },
            {
              "name": "Jamaica",
              "value": "JM"
            },
            {
              "name": "Japan",
              "value": "JP"
            },
            {
              "name": "Jersey",
              "value": "JE"
            },
            {
              "name": "Jordan",
              "value": "JO"
            },
            {
              "name": "Kazakhstan",
              "value": "KZ"
            },
            {
              "name": "Kenya",
              "value": "KE"
            },
            {
              "name": "Kiribati",
              "value": "KI"
            },
            {
              "name": "Korea (the Democratic People's Republic of)",
              "value": "KP"
            },
            {
              "name": "Korea (the Republic of)",
              "value": "KR"
            },
            {
              "name": "Kuwait",
              "value": "KW"
            },
            {
              "name": "Kyrgyzstan",
              "value": "KG"
            },
            {
              "name": "Lao People's Democratic Republic (the)",
              "value": "LA"
            },
            {
              "name": "Latvia",
              "value": "LV"
            },
            {
              "name": "Lebanon",
              "value": "LB"
            },
            {
              "name": "Lesotho",
              "value": "LS"
            },
            {
              "name": "Liberia",
              "value": "LR"
            },
            {
              "name": "Libya",
              "value": "LY"
            },
            {
              "name": "Liechtenstein",
              "value": "LI"
            },
            {
              "name": "Lithuania",
              "value": "LT"
            },
            {
              "name": "Luxembourg",
              "value": "LU"
            },
            {
              "name": "Macao",
              "value": "MO"
            },
            {
              "name": "Macedonia (the former Yugoslav Republic of)",
              "value": "MK"
            },
            {
              "name": "Madagascar",
              "value": "MG"
            },
            {
              "name": "Malawi",
              "value": "MW"
            },
            {
              "name": "Malaysia",
              "value": "MY"
            },
            {
              "name": "Maldives",
              "value": "MV"
            },
            {
              "name": "Mali",
              "value": "ML"
            },
            {
              "name": "Malta",
              "value": "MT"
            },
            {
              "name": "Marshall Islands (the)",
              "value": "MH"
            },
            {
              "name": "Martinique",
              "value": "MQ"
            },
            {
              "name": "Mauritania",
              "value": "MR"
            },
            {
              "name": "Mauritius",
              "value": "MU"
            },
            {
              "name": "Mayotte",
              "value": "YT"
            },
            {
              "name": "Mexico",
              "value": "MX"
            },
            {
              "name": "Micronesia (Federated States of)",
              "value": "FM"
            },
            {
              "name": "Moldova (the Republic of)",
              "value": "MD"
            },
            {
              "name": "Monaco",
              "value": "MC"
            },
            {
              "name": "Mongolia",
              "value": "MN"
            },
            {
              "name": "Montenegro",
              "value": "ME"
            },
            {
              "name": "Montserrat",
              "value": "MS"
            },
            {
              "name": "Morocco",
              "value": "MA"
            },
            {
              "name": "Mozambique",
              "value": "MZ"
            },
            {
              "name": "Myanmar",
              "value": "MM"
            },
            {
              "name": "Namibia",
              "value": "NA"
            },
            {
              "name": "Nauru",
              "value": "NR"
            },
            {
              "name": "Nepal",
              "value": "NP"
            },
            {
              "name": "Netherlands (the)",
              "value": "NL"
            },
            {
              "name": "New Caledonia",
              "value": "NC"
            },
            {
              "name": "New Zealand",
              "value": "NZ"
            },
            {
              "name": "Nicaragua",
              "value": "NI"
            },
            {
              "name": "Niger (the)",
              "value": "NE"
            },
            {
              "name": "Nigeria",
              "value": "NG"
            },
            {
              "name": "Niue",
              "value": "NU"
            },
            {
              "name": "Norfolk Island",
              "value": "NF"
            },
            {
              "name": "Northern Mariana Islands (the)",
              "value": "MP"
            },
            {
              "name": "Norway",
              "value": "NO"
            },
            {
              "name": "Oman",
              "value": "OM"
            },
            {
              "name": "Pakistan",
              "value": "PK"
            },
            {
              "name": "Palau",
              "value": "PW"
            },
            {
              "name": "Palestine, State of",
              "value": "PS"
            },
            {
              "name": "Panama",
              "value": "PA"
            },
            {
              "name": "Papua New Guinea",
              "value": "PG"
            },
            {
              "name": "Paraguay",
              "value": "PY"
            },
            {
              "name": "Peru",
              "value": "PE"
            },
            {
              "name": "Philippines (the)",
              "value": "PH"
            },
            {
              "name": "Pitcairn",
              "value": "PN"
            },
            {
              "name": "Poland",
              "value": "PL"
            },
            {
              "name": "Portugal",
              "value": "PT"
            },
            {
              "name": "Puerto Rico",
              "value": "PR"
            },
            {
              "name": "Qatar",
              "value": "QA"
            },
            {
              "name": "Réunion",
              "value": "RE"
            },
            {
              "name": "Romania",
              "value": "RO"
            },
            {
              "name": "Russian Federation (the)",
              "value": "RU"
            },
            {
              "name": "Rwanda",
              "value": "RW"
            },
            {
              "name": "Saint Barthélemy",
              "value": "BL"
            },
            {
              "name": "Saint Helena, Ascension and Tristan da Cunha",
              "value": "SH"
            },
            {
              "name": "Saint Kitts and Nevis",
              "value": "KN"
            },
            {
              "name": "Saint Lucia",
              "value": "LC"
            },
            {
              "name": "Saint Martin (French part)",
              "value": "MF"
            },
            {
              "name": "Saint Pierre and Miquelon",
              "value": "PM"
            },
            {
              "name": "Saint Vincent and the Grenadines",
              "value": "VC"
            },
            {
              "name": "Samoa",
              "value": "WS"
            },
            {
              "name": "San Marino",
              "value": "SM"
            },
            {
              "name": "Sao Tome and Principe",
              "value": "ST"
            },
            {
              "name": "Saudi Arabia",
              "value": "SA"
            },
            {
              "name": "Senegal",
              "value": "SN"
            },
            {
              "name": "Serbia",
              "value": "RS"
            },
            {
              "name": "Seychelles",
              "value": "SC"
            },
            {
              "name": "Sierra Leone",
              "value": "SL"
            },
            {
              "name": "Singapore",
              "value": "SG"
            },
            {
              "name": "Sint Maarten (Dutch part)",
              "value": "SX"
            },
            {
              "name": "Slovakia",
              "value": "SK"
            },
            {
              "name": "Slovenia",
              "value": "SI"
            },
            {
              "name": "Solomon Islands",
              "value": "SB"
            },
            {
              "name": "Somalia",
              "value": "SO"
            },
            {
              "name": "South Africa",
              "value": "ZA"
            },
            {
              "name": "South Georgia and the South Sandwich Islands",
              "value": "GS"
            },
            {
              "name": "South Sudan",
              "value": "SS"
            },
            {
              "name": "Spain",
              "value": "ES"
            },
            {
              "name": "Sri Lanka",
              "value": "LK"
            },
            {
              "name": "Sudan (the)",
              "value": "SD"
            },
            {
              "name": "Suriname",
              "value": "SR"
            },
            {
              "name": "Svalbard and Jan Mayen",
              "value": "SJ"
            },
            {
              "name": "Swaziland",
              "value": "SZ"
            },
            {
              "name": "Sweden",
              "value": "SE"
            },
            {
              "name": "Switzerland",
              "value": "CH"
            },
            {
              "name": "Syrian Arab Republic",
              "value": "SY"
            },
            {
              "name": "Taiwan (Province of China)",
              "value": "TW"
            },
            {
              "name": "Tajikistan",
              "value": "TJ"
            },
            {
              "name": "Tanzania, United Republic of",
              "value": "TZ"
            },
            {
              "name": "Thailand",
              "value": "TH"
            },
            {
              "name": "Timor-Leste",
              "value": "TL"
            },
            {
              "name": "Togo",
              "value": "TG"
            },
            {
              "name": "Tokelau",
              "value": "TK"
            },
            {
              "name": "Tonga",
              "value": "TO"
            },
            {
              "name": "Trinidad and Tobago",
              "value": "TT"
            },
            {
              "name": "Tunisia",
              "value": "TN"
            },
            {
              "name": "Turkey",
              "value": "TR"
            },
            {
              "name": "Turkmenistan",
              "value": "TM"
            },
            {
              "name": "Turks and Caicos Islands (the)",
              "value": "TC"
            },
            {
              "name": "Tuvalu",
              "value": "TV"
            },
            {
              "name": "Uganda",
              "value": "UG"
            },
            {
              "name": "Ukraine",
              "value": "UA"
            },
            {
              "name": "United Arab Emirates (the)",
              "value": "AE"
            },
            {
              "name": "United Kingdom of Great Britain and Northern Ireland (the)",
              "value": "GB"
            },
            {
              "name": "United States Minor Outlying Islands (the)",
              "value": "UM"
            },
            {
              "name": "United States of America (the)",
              "value": "US"
            },
            {
              "name": "Uruguay",
              "value": "UY"
            },
            {
              "name": "Uzbekistan",
              "value": "UZ"
            },
            {
              "name": "Vanuatu",
              "value": "VU"
            },
            {
              "name": "Venezuela (Bolivarian Republic of)",
              "value": "VE"
            },
            {
              "name": "Viet Nam",
              "value": "VN"
            },
            {
              "name": "Virgin Islands (British)",
              "value": "VG"
            },
            {
              "name": "Virgin Islands (U.S.)",
              "value": "VI"
            },
            {
              "name": "Wallis and Futuna",
              "value": "WF"
            },
            {
              "name": "Western Sahara*",
              "value": "EH"
            },
            {
              "name": "Yemen",
              "value": "YE"
            },
            {
              "name": "Zambia",
              "value": "ZM"
            },
            {
              "name": "Zimbabwe",
              "value": "ZW"
            }
          ],
          "default": "",
          "description": "If a country code is specified, only content that is playable in that market is returned"
        }
      ],
      "displayOptions": {
        "show": {
          "resource": [
            "playlist",
            "artist",
            "track",
            "album"
          ],
          "operation": [
            "search"
          ]
        }
      }
    }
  ]

operations:
  [
    {
      "operation": "addSongToQueue",
      "name": "Add Song to Queue",
      "description": "Add a song to your queue",
      "resource": "player"
    },
    {
      "operation": "currentlyPlaying",
      "name": "Currently Playing",
      "description": "Get your currently playing track",
      "resource": "player"
    },
    {
      "operation": "nextSong",
      "name": "Next Song",
      "description": "Skip to your next track",
      "resource": "player"
    },
    {
      "operation": "pause",
      "name": "Pause",
      "description": "Pause your music",
      "resource": "player"
    },
    {
      "operation": "previousSong",
      "name": "Previous Song",
      "description": "Skip to your previous song",
      "resource": "player"
    },
    {
      "operation": "recentlyPlayed",
      "name": "Recently Played",
      "description": "Get your recently played tracks",
      "resource": "player"
    },
    {
      "operation": "resume",
      "name": "Resume",
      "description": "Resume playback on the current active device",
      "resource": "player"
    },
    {
      "operation": "volume",
      "name": "Set Volume",
      "description": "Set volume on the current active device",
      "resource": "player"
    },
    {
      "operation": "startMusic",
      "name": "Start Music",
      "description": "Start playing a playlist, artist, or album",
      "resource": "player"
    },
    {
      "operation": "get",
      "name": "Get",
      "description": "Get an album by URI or ID",
      "resource": "album"
    },
    {
      "operation": "getNewReleases",
      "name": "Get New Releases",
      "description": "Get a list of new album releases",
      "resource": "album"
    },
    {
      "operation": "getTracks",
      "name": "Get Tracks",
      "description": "Get an album's tracks by URI or ID",
      "resource": "album"
    },
    {
      "operation": "search",
      "name": "Search",
      "description": "Search albums by keyword",
      "resource": "album"
    },
    {
      "operation": "get",
      "name": "Get",
      "description": "Get an artist by URI or ID",
      "resource": "artist"
    },
    {
      "operation": "getAlbums",
      "name": "Get Albums",
      "description": "Get an artist's albums by URI or ID",
      "resource": "artist"
    },
    {
      "operation": "getRelatedArtists",
      "name": "Get Related Artists",
      "description": "Get an artist's related artists by URI or ID",
      "resource": "artist"
    },
    {
      "operation": "getTopTracks",
      "name": "Get Top Tracks",
      "description": "Get an artist's top tracks by URI or ID",
      "resource": "artist"
    },
    {
      "operation": "search",
      "name": "Search",
      "description": "Search artists by keyword",
      "resource": "artist"
    },
    {
      "operation": "add",
      "name": "Add an Item",
      "description": "Add tracks to a playlist by track and playlist URI or ID",
      "resource": "playlist"
    },
    {
      "operation": "create",
      "name": "Create a Playlist",
      "description": "Create a new playlist",
      "resource": "playlist"
    },
    {
      "operation": "get",
      "name": "Get",
      "description": "Get a playlist by URI or ID",
      "resource": "playlist"
    },
    {
      "operation": "getUserPlaylists",
      "name": "Get the User's Playlists",
      "description": "Get a user's playlists",
      "resource": "playlist"
    },
    {
      "operation": "getTracks",
      "name": "Get Tracks",
      "description": "Get a playlist's tracks by URI or ID",
      "resource": "playlist"
    },
    {
      "operation": "delete",
      "name": "Remove an Item",
      "description": "Remove tracks from a playlist by track and playlist URI or ID",
      "resource": "playlist"
    },
    {
      "operation": "search",
      "name": "Search",
      "description": "Search playlists by keyword",
      "resource": "playlist"
    },
    {
      "operation": "get",
      "name": "Get",
      "description": "Get a track by its URI or ID",
      "resource": "track"
    },
    {
      "operation": "getAudioFeatures",
      "name": "Get Audio Features",
      "description": "Get audio features for a track by URI or ID",
      "resource": "track"
    },
    {
      "operation": "search",
      "name": "Search",
      "description": "Search tracks by keyword",
      "resource": "track"
    },
    {
      "operation": "getLikedTracks",
      "name": "Get Liked Tracks",
      "description": "Get the user's liked tracks",
      "resource": "library"
    },
    {
      "operation": "getFollowingArtists",
      "name": "Get Following Artists",
      "description": "Get your followed artists",
      "resource": "myData"
    }
  ]


