# nodes

node_type: @onlyfansapi/n8n-nodes-onlyfansapi.onlyFans
package_name: @onlyfansapi/n8n-nodes-onlyfansapi
display_name: OnlyFans API
description: Consume the OnlyFans API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:36
author_name: onlyfans-dev
author_github_url: https://github.com/onlyfansapi/n8n-nodes-onlyfansapi.git
npm_package_name: @onlyfansapi/n8n-nodes-onlyfansapi
npm_version: 1.1.1
community_fetched_at: 2026-04-16T09:43:36.044Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Connect OnlyFans Account",
          "value": "connectOnlyfansAccount"
        },
        {
          "name": "Account",
          "value": "account"
        },
        {
          "name": "Chats",
          "value": "chats"
        },
        {
          "name": "Chat Messages",
          "value": "chatMessages"
        },
        {
          "name": "Mass Messaging",
          "value": "massMessaging"
        },
        {
          "name": "Saved For Later (Messages)",
          "value": "savedForLaterMessages"
        },
        {
          "name": "Posts",
          "value": "posts"
        },
        {
          "name": "Post Labels",
          "value": "postLabels"
        },
        {
          "name": "Post Comments",
          "value": "postComments"
        },
        {
          "name": "Saved For Later (Posts)",
          "value": "savedForLaterPosts"
        },
        {
          "name": "Queue",
          "value": "queue"
        },
        {
          "name": "Fans",
          "value": "fans"
        },
        {
          "name": "Following",
          "value": "following"
        },
        {
          "name": "User List Collections",
          "value": "userListCollections"
        },
        {
          "name": "Media Vault",
          "value": "mediaVault"
        },
        {
          "name": "Media Vault Lists",
          "value": "mediaVaultLists"
        },
        {
          "name": "Media",
          "value": "media"
        },
        {
          "name": "Free Trial Links",
          "value": "freeTrialLinks"
        },
        {
          "name": "Tracking Links",
          "value": "trackingLinks"
        },
        {
          "name": "Transactions",
          "value": "transactions"
        },
        {
          "name": "Statistics",
          "value": "statistics"
        },
        {
          "name": "Chargebacks",
          "value": "chargebacks"
        },
        {
          "name": "Banking",
          "value": "banking"
        },
        {
          "name": "Payouts",
          "value": "payouts"
        },
        {
          "name": "Users",
          "value": "users"
        },
        {
          "name": "Public Profiles",
          "value": "publicProfiles"
        },
        {
          "name": "Notifications",
          "value": "notifications"
        },
        {
          "name": "OnlyFans Settings",
          "value": "onlyFansSettings"
        },
        {
          "name": "Social Media Buttons",
          "value": "socialMediaButtons"
        },
        {
          "name": "Webhooks",
          "value": "webhooks"
        },
        {
          "name": "API Keys",
          "value": "apiKeys"
        },
        {
          "name": "Client Sessions",
          "value": "clientSessions"
        }
      ],
      "required": true,
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Poll Authentication Status",
          "value": "pollAuthenticationStatus"
        },
        {
          "name": "Submit 2FA",
          "value": "submit2FA"
        },
        {
          "name": "Re-authenticate Account",
          "value": "reAuthenticateAccount"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "connectOnlyfansAccount"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "List Accounts",
          "value": "listAccounts"
        },
        {
          "name": "Get Current Account",
          "value": "getCurrentAccount"
        },
        {
          "name": "Get Model Start Date",
          "value": "getModelStartDate"
        },
        {
          "name": "Get Top Percentage",
          "value": "getTopPercentage"
        },
        {
          "name": "Disconnect Account",
          "value": "disconnectAccount"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "account"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "List Chats",
          "value": "listChats"
        },
        {
          "name": "List Chat Media (Gallery)",
          "value": "listChatMediaGallery"
        },
        {
          "name": "Mute Chat Notifications",
          "value": "muteChatNotifications"
        },
        {
          "name": "Unmute Chat Notifications",
          "value": "unmuteChatNotifications"
        },
        {
          "name": "Start Typing Indicator",
          "value": "startTypingIndicator"
        },
        {
          "name": "Hide Chat",
          "value": "hideChat"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "chats"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "List Chat Messages",
          "value": "listChatMessages"
        },
        {
          "name": "Search Chat Messages",
          "value": "searchChatMessages"
        },
        {
          "name": "Send Message",
          "value": "sendMessage"
        },
        {
          "name": "Delete Message",
          "value": "deleteMessage"
        },
        {
          "name": "Like Message",
          "value": "likeMessage"
        },
        {
          "name": "Unlike Message",
          "value": "unlikeMessage"
        },
        {
          "name": "Pin Message",
          "value": "pinMessage"
        },
        {
          "name": "Unpin Message",
          "value": "unpinMessage"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "chatMessages"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Get Mass Message Overview",
          "value": "getMassMessageOverview"
        },
        {
          "name": "List Mass Message Queue",
          "value": "listMassMessageQueue"
        },
        {
          "name": "Get Mass Message",
          "value": "getMassMessage"
        },
        {
          "name": "Send Mass Message",
          "value": "sendMassMessage"
        },
        {
          "name": "Update Mass Message",
          "value": "updateMassMessage"
        },
        {
          "name": "Unsend/Delete Mass Message",
          "value": "unsendDeleteMassMessage"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "massMessaging"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "List Saved For Later Messages",
          "value": "listSavedForLaterMessages"
        },
        {
          "name": "Get Chat Message Settings",
          "value": "getMessageSettings"
        },
        {
          "name": "Enable/Update Automatic Messaging",
          "value": "enableUpdateAutomaticMessaging"
        },
        {
          "name": "Disable Automatic Messaging",
          "value": "disableAutomaticMessaging"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "savedForLaterMessages"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "List Posts",
          "value": "listPosts"
        },
        {
          "name": "Get Post",
          "value": "getPost"
        },
        {
          "name": "Send Post",
          "value": "sendPost"
        },
        {
          "name": "Update Post",
          "value": "updatePost"
        },
        {
          "name": "Show Post Statistics",
          "value": "showPostStatistics"
        },
        {
          "name": "Pin/Unpin Post",
          "value": "pinUnpinPost"
        },
        {
          "name": "Archive Post",
          "value": "archivePost"
        },
        {
          "name": "Unarchive Post",
          "value": "unarchivePost"
        },
        {
          "name": "Delete Post",
          "value": "deletePost"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "posts"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "List Labels",
          "value": "listLabels"
        },
        {
          "name": "Create Label",
          "value": "createLabel"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "postLabels"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "List Post Comments",
          "value": "listPostComments"
        },
        {
          "name": "Create Post Comment",
          "value": "createPostComment"
        },
        {
          "name": "Delete Post Comment",
          "value": "deletePostComment"
        },
        {
          "name": "Like Post Comment",
          "value": "likePostComment"
        },
        {
          "name": "Unlike Post Comment",
          "value": "unlikePostComment"
        },
        {
          "name": "Pin Post Comment",
          "value": "pinPostComment"
        },
        {
          "name": "Unpin Post Comment",
          "value": "unpinPostComment"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "postComments"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "List Saved For Later Posts",
          "value": "listSavedForLaterPosts"
        },
        {
          "name": "Get Post Settings",
          "value": "getPostSettings"
        },
        {
          "name": "Enable/Update Automatic Posting",
          "value": "enableUpdateAutomaticPosting"
        },
        {
          "name": "Disable Automatic Posting",
          "value": "disableAutomaticPosting"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "savedForLaterPosts"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Count Queue Items",
          "value": "countQueueItems"
        },
        {
          "name": "List Queue Items",
          "value": "listQueueItems"
        },
        {
          "name": "Publish Queue Item",
          "value": "publishQueueItem"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "queue"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "List Active Fans",
          "value": "listActiveFans"
        },
        {
          "name": "List All Fans",
          "value": "listAllFans"
        },
        {
          "name": "List Expired Fans",
          "value": "listExpiredFans"
        },
        {
          "name": "List Latest Fans",
          "value": "listLatestFans"
        },
        {
          "name": "Set Fan's Custom Name",
          "value": "setFansCustomName"
        },
        {
          "name": "Get Fan Notes",
          "value": "getFanNotes"
        },
        {
          "name": "Create/Edit Fan Notes",
          "value": "createEditFanNotes"
        },
        {
          "name": "Clear Fan Notes",
          "value": "clearFanNotes"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "fans"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "List Active Following",
          "value": "listActiveFollowings"
        },
        {
          "name": "List All Following",
          "value": "listAllFollowings"
        },
        {
          "name": "List Expired Following",
          "value": "listExpiredFollowings"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "following"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "List User Lists",
          "value": "listUserLists"
        },
        {
          "name": "Create User List",
          "value": "createUserList"
        },
        {
          "name": "Get User List",
          "value": "getUserList"
        },
        {
          "name": "Update User List",
          "value": "updateUserList"
        },
        {
          "name": "Delete User List",
          "value": "deleteUserList"
        },
        {
          "name": "List User List Users",
          "value": "listUserListUsers"
        },
        {
          "name": "Add Users To User List",
          "value": "addUsersToUserList"
        },
        {
          "name": "Remove User from a User List",
          "value": "removeUserFromAUserList"
        },
        {
          "name": "Clear User List",
          "value": "clearUserList"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "userListCollections"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "List Vault Media",
          "value": "listVaultMedia"
        },
        {
          "name": "Get Vault Media",
          "value": "getVaultMedia"
        },
        {
          "name": "Delete Vault Media",
          "value": "deleteVaultMedia"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "mediaVault"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Add Media To List",
          "value": "addMediaToList"
        },
        {
          "name": "Create Vault List",
          "value": "createVaultList"
        },
        {
          "name": "Delete Vault List",
          "value": "deleteVaultList"
        },
        {
          "name": "List Vault Lists",
          "value": "listVaultLists"
        },
        {
          "name": "Remove Media From List",
          "value": "removeMediaFromList"
        },
        {
          "name": "Rename Vault List",
          "value": "renameVaultList"
        },
        {
          "name": "Show Vault List",
          "value": "showVaultList"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "mediaVaultLists"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Scrape media from the OnlyFans CDN",
          "value": "scrapeMediaFromTheOnlyFansCDN"
        },
        {
          "name": "Upload media to the OnlyFans CDN",
          "value": "uploadMediaToTheOnlyFansCDN"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "media"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Create Free Trial Link",
          "value": "createFreeTrialLink"
        },
        {
          "name": "Delete Free Trial Link",
          "value": "deleteFreeTrialLink"
        },
        {
          "name": "List Free Trial Link Spenders",
          "value": "listFreeTrialLinkSpenders"
        },
        {
          "name": "List Free Trial Link Subscribers",
          "value": "listFreeTrialLinkSubscribers"
        },
        {
          "name": "List Free Trial Links",
          "value": "listFreeTrialLinks"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "freeTrialLinks"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Create Tracking Link",
          "value": "createTrackingLink"
        },
        {
          "name": "Delete Tracking Link",
          "value": "deleteTrackingLink"
        },
        {
          "name": "List Tracking Link Spenders",
          "value": "listTrackingLinkSpenders"
        },
        {
          "name": "List Tracking Link Subscribers",
          "value": "listTrackingLinkSubscribers"
        },
        {
          "name": "List Tracking Links",
          "value": "listTrackingLinks"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "trackingLinks"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "List Transactions",
          "value": "listTransactions"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "transactions"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Calculate Total Transactions",
          "value": "calculateTotalTransactions"
        },
        {
          "name": "Get Earnings",
          "value": "getEarnings"
        },
        {
          "name": "Get Profile Visitors",
          "value": "getProfileVisitors"
        },
        {
          "name": "Get Subscriber Metrics",
          "value": "getSubscriberMetrics"
        },
        {
          "name": "Get Subscriber Statistics",
          "value": "getSubscriberStatistics"
        },
        {
          "name": "Overview",
          "value": "statisticsOverview"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "statistics"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Calculate Chargeback Ratio",
          "value": "calculateChargebackRatio"
        },
        {
          "name": "List Chargeback Statistics",
          "value": "listChargebackStatistics"
        },
        {
          "name": "List Chargebacks",
          "value": "listChargebacks"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "chargebacks"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Get Account Country Details",
          "value": "getAccountCountryDetails"
        },
        {
          "name": "Get Bank Payout Details",
          "value": "getBankPayoutDetails"
        },
        {
          "name": "Get DAC7 Form Details",
          "value": "getDAC7FormDetails"
        },
        {
          "name": "Get Legal and Tax Status",
          "value": "getLegalAndTaxStatus"
        },
        {
          "name": "Get Legal Form Details",
          "value": "getLegalFormDetails"
        },
        {
          "name": "List Available Payout Systems",
          "value": "listAvailablePayoutSystems"
        },
        {
          "name": "List Countries",
          "value": "listCountries"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "banking"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Get Account Balances",
          "value": "getAccountBalances"
        },
        {
          "name": "Get Earning Statistics",
          "value": "getEarningStatistics"
        },
        {
          "name": "Get Eligibility",
          "value": "getEligibility"
        },
        {
          "name": "List Payout Requests",
          "value": "listPayoutRequests"
        },
        {
          "name": "List Transactions (Earnings)",
          "value": "listTransactionsEarnings"
        },
        {
          "name": "Request Manual Withdrawal",
          "value": "requestManualWithdrawal"
        },
        {
          "name": "Update Payout Frequency",
          "value": "updatePayoutFrequency"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "payouts"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Get User Details",
          "value": "getUserDetails"
        },
        {
          "name": "Restrict User",
          "value": "restrictUser"
        },
        {
          "name": "Unrestrict User",
          "value": "unrestrictUser"
        },
        {
          "name": "Block User",
          "value": "blockUser"
        },
        {
          "name": "Unblock User",
          "value": "unblockUser"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "users"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Get Profile Details",
          "value": "getProfileDetails"
        },
        {
          "name": "Search Profiles",
          "value": "searchProfiles"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "publicProfiles"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Get Notification Counts",
          "value": "getNotificationCounts"
        },
        {
          "name": "Get Notification Tabs Order",
          "value": "getNotificationTabsOrder"
        },
        {
          "name": "List Notifications",
          "value": "listNotifications"
        },
        {
          "name": "Mark All Notifications As Read",
          "value": "markAllNotificationsAsRead"
        },
        {
          "name": "Search Users In Notifications",
          "value": "searchUsersInNotifications"
        },
        {
          "name": "Update Notification Tabs Order",
          "value": "updateNotificationTabsOrder"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "notifications"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Get Settings",
          "value": "getSettings"
        },
        {
          "name": "Update Profile",
          "value": "updateProfile"
        },
        {
          "name": "Check Username Availability",
          "value": "checkUsernameAvailability"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "onlyFansSettings"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "List Social Media Buttons",
          "value": "listSocialMediaButtons"
        },
        {
          "name": "Add Social Media Button",
          "value": "addSocialMediaButton"
        },
        {
          "name": "Update Social Media Button",
          "value": "updateSocialMediaButton"
        },
        {
          "name": "Delete Social Media Button",
          "value": "deleteSocialMediaButton"
        },
        {
          "name": "Reorder Social Media Button",
          "value": "reorderSocialMediaButtons"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "socialMediaButtons"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "List Webhooks",
          "value": "listWebhooks"
        },
        {
          "name": "List Available Events",
          "value": "listAvailableEvents"
        },
        {
          "name": "Create Webhook",
          "value": "createWebhook"
        },
        {
          "name": "Show Webhook",
          "value": "showWebhook"
        },
        {
          "name": "Update Webhook",
          "value": "updateWebhook"
        },
        {
          "name": "Delete Webhook",
          "value": "deleteWebhook"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "webhooks"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Whoami",
          "value": "whoami"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "apiKeys"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "",
      "options": [
        {
          "name": "Create Client Session",
          "value": "createClientSession"
        }
      ],
      "required": true,
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "clientSessions"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Poll Authentication Status",
      "value": "pollAuthenticationStatus",
      "resource": "connectOnlyfansAccount"
    },
    {
      "name": "Submit 2FA",
      "value": "submit2FA",
      "resource": "connectOnlyfansAccount"
    },
    {
      "name": "Re-authenticate Account",
      "value": "reAuthenticateAccount",
      "resource": "connectOnlyfansAccount"
    },
    {
      "name": "List Accounts",
      "value": "listAccounts",
      "resource": "account"
    },
    {
      "name": "Get Current Account",
      "value": "getCurrentAccount",
      "resource": "account"
    },
    {
      "name": "Get Model Start Date",
      "value": "getModelStartDate",
      "resource": "account"
    },
    {
      "name": "Get Top Percentage",
      "value": "getTopPercentage",
      "resource": "account"
    },
    {
      "name": "Disconnect Account",
      "value": "disconnectAccount",
      "resource": "account"
    },
    {
      "name": "List Chats",
      "value": "listChats",
      "resource": "chats"
    },
    {
      "name": "List Chat Media (Gallery)",
      "value": "listChatMediaGallery",
      "resource": "chats"
    },
    {
      "name": "Mute Chat Notifications",
      "value": "muteChatNotifications",
      "resource": "chats"
    },
    {
      "name": "Unmute Chat Notifications",
      "value": "unmuteChatNotifications",
      "resource": "chats"
    },
    {
      "name": "Start Typing Indicator",
      "value": "startTypingIndicator",
      "resource": "chats"
    },
    {
      "name": "Hide Chat",
      "value": "hideChat",
      "resource": "chats"
    },
    {
      "name": "List Chat Messages",
      "value": "listChatMessages",
      "resource": "chatMessages"
    },
    {
      "name": "Search Chat Messages",
      "value": "searchChatMessages",
      "resource": "chatMessages"
    },
    {
      "name": "Send Message",
      "value": "sendMessage",
      "resource": "chatMessages"
    },
    {
      "name": "Delete Message",
      "value": "deleteMessage",
      "resource": "chatMessages"
    },
    {
      "name": "Like Message",
      "value": "likeMessage",
      "resource": "chatMessages"
    },
    {
      "name": "Unlike Message",
      "value": "unlikeMessage",
      "resource": "chatMessages"
    },
    {
      "name": "Pin Message",
      "value": "pinMessage",
      "resource": "chatMessages"
    },
    {
      "name": "Unpin Message",
      "value": "unpinMessage",
      "resource": "chatMessages"
    },
    {
      "name": "Get Mass Message Overview",
      "value": "getMassMessageOverview",
      "resource": "massMessaging"
    },
    {
      "name": "List Mass Message Queue",
      "value": "listMassMessageQueue",
      "resource": "massMessaging"
    },
    {
      "name": "Get Mass Message",
      "value": "getMassMessage",
      "resource": "massMessaging"
    },
    {
      "name": "Send Mass Message",
      "value": "sendMassMessage",
      "resource": "massMessaging"
    },
    {
      "name": "Update Mass Message",
      "value": "updateMassMessage",
      "resource": "massMessaging"
    },
    {
      "name": "Unsend/Delete Mass Message",
      "value": "unsendDeleteMassMessage",
      "resource": "massMessaging"
    },
    {
      "name": "List Saved For Later Messages",
      "value": "listSavedForLaterMessages",
      "resource": "savedForLaterMessages"
    },
    {
      "name": "Get Chat Message Settings",
      "value": "getMessageSettings",
      "resource": "savedForLaterMessages"
    },
    {
      "name": "Enable/Update Automatic Messaging",
      "value": "enableUpdateAutomaticMessaging",
      "resource": "savedForLaterMessages"
    },
    {
      "name": "Disable Automatic Messaging",
      "value": "disableAutomaticMessaging",
      "resource": "savedForLaterMessages"
    },
    {
      "name": "List Posts",
      "value": "listPosts",
      "resource": "posts"
    },
    {
      "name": "Get Post",
      "value": "getPost",
      "resource": "posts"
    },
    {
      "name": "Send Post",
      "value": "sendPost",
      "resource": "posts"
    },
    {
      "name": "Update Post",
      "value": "updatePost",
      "resource": "posts"
    },
    {
      "name": "Show Post Statistics",
      "value": "showPostStatistics",
      "resource": "posts"
    },
    {
      "name": "Pin/Unpin Post",
      "value": "pinUnpinPost",
      "resource": "posts"
    },
    {
      "name": "Archive Post",
      "value": "archivePost",
      "resource": "posts"
    },
    {
      "name": "Unarchive Post",
      "value": "unarchivePost",
      "resource": "posts"
    },
    {
      "name": "Delete Post",
      "value": "deletePost",
      "resource": "posts"
    },
    {
      "name": "List Labels",
      "value": "listLabels",
      "resource": "postLabels"
    },
    {
      "name": "Create Label",
      "value": "createLabel",
      "resource": "postLabels"
    },
    {
      "name": "List Post Comments",
      "value": "listPostComments",
      "resource": "postComments"
    },
    {
      "name": "Create Post Comment",
      "value": "createPostComment",
      "resource": "postComments"
    },
    {
      "name": "Delete Post Comment",
      "value": "deletePostComment",
      "resource": "postComments"
    },
    {
      "name": "Like Post Comment",
      "value": "likePostComment",
      "resource": "postComments"
    },
    {
      "name": "Unlike Post Comment",
      "value": "unlikePostComment",
      "resource": "postComments"
    },
    {
      "name": "Pin Post Comment",
      "value": "pinPostComment",
      "resource": "postComments"
    },
    {
      "name": "Unpin Post Comment",
      "value": "unpinPostComment",
      "resource": "postComments"
    },
    {
      "name": "List Saved For Later Posts",
      "value": "listSavedForLaterPosts",
      "resource": "savedForLaterPosts"
    },
    {
      "name": "Get Post Settings",
      "value": "getPostSettings",
      "resource": "savedForLaterPosts"
    },
    {
      "name": "Enable/Update Automatic Posting",
      "value": "enableUpdateAutomaticPosting",
      "resource": "savedForLaterPosts"
    },
    {
      "name": "Disable Automatic Posting",
      "value": "disableAutomaticPosting",
      "resource": "savedForLaterPosts"
    },
    {
      "name": "Count Queue Items",
      "value": "countQueueItems",
      "resource": "queue"
    },
    {
      "name": "List Queue Items",
      "value": "listQueueItems",
      "resource": "queue"
    },
    {
      "name": "Publish Queue Item",
      "value": "publishQueueItem",
      "resource": "queue"
    },
    {
      "name": "List Active Fans",
      "value": "listActiveFans",
      "resource": "fans"
    },
    {
      "name": "List All Fans",
      "value": "listAllFans",
      "resource": "fans"
    },
    {
      "name": "List Expired Fans",
      "value": "listExpiredFans",
      "resource": "fans"
    },
    {
      "name": "List Latest Fans",
      "value": "listLatestFans",
      "resource": "fans"
    },
    {
      "name": "Set Fan's Custom Name",
      "value": "setFansCustomName",
      "resource": "fans"
    },
    {
      "name": "Get Fan Notes",
      "value": "getFanNotes",
      "resource": "fans"
    },
    {
      "name": "Create/Edit Fan Notes",
      "value": "createEditFanNotes",
      "resource": "fans"
    },
    {
      "name": "Clear Fan Notes",
      "value": "clearFanNotes",
      "resource": "fans"
    },
    {
      "name": "List Active Following",
      "value": "listActiveFollowings",
      "resource": "following"
    },
    {
      "name": "List All Following",
      "value": "listAllFollowings",
      "resource": "following"
    },
    {
      "name": "List Expired Following",
      "value": "listExpiredFollowings",
      "resource": "following"
    },
    {
      "name": "List User Lists",
      "value": "listUserLists",
      "resource": "userListCollections"
    },
    {
      "name": "Create User List",
      "value": "createUserList",
      "resource": "userListCollections"
    },
    {
      "name": "Get User List",
      "value": "getUserList",
      "resource": "userListCollections"
    },
    {
      "name": "Update User List",
      "value": "updateUserList",
      "resource": "userListCollections"
    },
    {
      "name": "Delete User List",
      "value": "deleteUserList",
      "resource": "userListCollections"
    },
    {
      "name": "List User List Users",
      "value": "listUserListUsers",
      "resource": "userListCollections"
    },
    {
      "name": "Add Users To User List",
      "value": "addUsersToUserList",
      "resource": "userListCollections"
    },
    {
      "name": "Remove User from a User List",
      "value": "removeUserFromAUserList",
      "resource": "userListCollections"
    },
    {
      "name": "Clear User List",
      "value": "clearUserList",
      "resource": "userListCollections"
    },
    {
      "name": "List Vault Media",
      "value": "listVaultMedia",
      "resource": "mediaVault"
    },
    {
      "name": "Get Vault Media",
      "value": "getVaultMedia",
      "resource": "mediaVault"
    },
    {
      "name": "Delete Vault Media",
      "value": "deleteVaultMedia",
      "resource": "mediaVault"
    },
    {
      "name": "Add Media To List",
      "value": "addMediaToList",
      "resource": "mediaVaultLists"
    },
    {
      "name": "Create Vault List",
      "value": "createVaultList",
      "resource": "mediaVaultLists"
    },
    {
      "name": "Delete Vault List",
      "value": "deleteVaultList",
      "resource": "mediaVaultLists"
    },
    {
      "name": "List Vault Lists",
      "value": "listVaultLists",
      "resource": "mediaVaultLists"
    },
    {
      "name": "Remove Media From List",
      "value": "removeMediaFromList",
      "resource": "mediaVaultLists"
    },
    {
      "name": "Rename Vault List",
      "value": "renameVaultList",
      "resource": "mediaVaultLists"
    },
    {
      "name": "Show Vault List",
      "value": "showVaultList",
      "resource": "mediaVaultLists"
    },
    {
      "name": "Scrape media from the OnlyFans CDN",
      "value": "scrapeMediaFromTheOnlyFansCDN",
      "resource": "media"
    },
    {
      "name": "Upload media to the OnlyFans CDN",
      "value": "uploadMediaToTheOnlyFansCDN",
      "resource": "media"
    },
    {
      "name": "Create Free Trial Link",
      "value": "createFreeTrialLink",
      "resource": "freeTrialLinks"
    },
    {
      "name": "Delete Free Trial Link",
      "value": "deleteFreeTrialLink",
      "resource": "freeTrialLinks"
    },
    {
      "name": "List Free Trial Link Spenders",
      "value": "listFreeTrialLinkSpenders",
      "resource": "freeTrialLinks"
    },
    {
      "name": "List Free Trial Link Subscribers",
      "value": "listFreeTrialLinkSubscribers",
      "resource": "freeTrialLinks"
    },
    {
      "name": "List Free Trial Links",
      "value": "listFreeTrialLinks",
      "resource": "freeTrialLinks"
    },
    {
      "name": "Create Tracking Link",
      "value": "createTrackingLink",
      "resource": "trackingLinks"
    },
    {
      "name": "Delete Tracking Link",
      "value": "deleteTrackingLink",
      "resource": "trackingLinks"
    },
    {
      "name": "List Tracking Link Spenders",
      "value": "listTrackingLinkSpenders",
      "resource": "trackingLinks"
    },
    {
      "name": "List Tracking Link Subscribers",
      "value": "listTrackingLinkSubscribers",
      "resource": "trackingLinks"
    },
    {
      "name": "List Tracking Links",
      "value": "listTrackingLinks",
      "resource": "trackingLinks"
    },
    {
      "name": "List Transactions",
      "value": "listTransactions",
      "resource": "transactions"
    },
    {
      "name": "Calculate Total Transactions",
      "value": "calculateTotalTransactions",
      "resource": "statistics"
    },
    {
      "name": "Get Earnings",
      "value": "getEarnings",
      "resource": "statistics"
    },
    {
      "name": "Get Profile Visitors",
      "value": "getProfileVisitors",
      "resource": "statistics"
    },
    {
      "name": "Get Subscriber Metrics",
      "value": "getSubscriberMetrics",
      "resource": "statistics"
    },
    {
      "name": "Get Subscriber Statistics",
      "value": "getSubscriberStatistics",
      "resource": "statistics"
    },
    {
      "name": "Overview",
      "value": "statisticsOverview",
      "resource": "statistics"
    },
    {
      "name": "Calculate Chargeback Ratio",
      "value": "calculateChargebackRatio",
      "resource": "chargebacks"
    },
    {
      "name": "List Chargeback Statistics",
      "value": "listChargebackStatistics",
      "resource": "chargebacks"
    },
    {
      "name": "List Chargebacks",
      "value": "listChargebacks",
      "resource": "chargebacks"
    },
    {
      "name": "Get Account Country Details",
      "value": "getAccountCountryDetails",
      "resource": "banking"
    },
    {
      "name": "Get Bank Payout Details",
      "value": "getBankPayoutDetails",
      "resource": "banking"
    },
    {
      "name": "Get DAC7 Form Details",
      "value": "getDAC7FormDetails",
      "resource": "banking"
    },
    {
      "name": "Get Legal and Tax Status",
      "value": "getLegalAndTaxStatus",
      "resource": "banking"
    },
    {
      "name": "Get Legal Form Details",
      "value": "getLegalFormDetails",
      "resource": "banking"
    },
    {
      "name": "List Available Payout Systems",
      "value": "listAvailablePayoutSystems",
      "resource": "banking"
    },
    {
      "name": "List Countries",
      "value": "listCountries",
      "resource": "banking"
    },
    {
      "name": "Get Account Balances",
      "value": "getAccountBalances",
      "resource": "payouts"
    },
    {
      "name": "Get Earning Statistics",
      "value": "getEarningStatistics",
      "resource": "payouts"
    },
    {
      "name": "Get Eligibility",
      "value": "getEligibility",
      "resource": "payouts"
    },
    {
      "name": "List Payout Requests",
      "value": "listPayoutRequests",
      "resource": "payouts"
    },
    {
      "name": "List Transactions (Earnings)",
      "value": "listTransactionsEarnings",
      "resource": "payouts"
    },
    {
      "name": "Request Manual Withdrawal",
      "value": "requestManualWithdrawal",
      "resource": "payouts"
    },
    {
      "name": "Update Payout Frequency",
      "value": "updatePayoutFrequency",
      "resource": "payouts"
    },
    {
      "name": "Get User Details",
      "value": "getUserDetails",
      "resource": "users"
    },
    {
      "name": "Restrict User",
      "value": "restrictUser",
      "resource": "users"
    },
    {
      "name": "Unrestrict User",
      "value": "unrestrictUser",
      "resource": "users"
    },
    {
      "name": "Block User",
      "value": "blockUser",
      "resource": "users"
    },
    {
      "name": "Unblock User",
      "value": "unblockUser",
      "resource": "users"
    },
    {
      "name": "Get Profile Details",
      "value": "getProfileDetails",
      "resource": "publicProfiles"
    },
    {
      "name": "Search Profiles",
      "value": "searchProfiles",
      "resource": "publicProfiles"
    },
    {
      "name": "Get Notification Counts",
      "value": "getNotificationCounts",
      "resource": "notifications"
    },
    {
      "name": "Get Notification Tabs Order",
      "value": "getNotificationTabsOrder",
      "resource": "notifications"
    },
    {
      "name": "List Notifications",
      "value": "listNotifications",
      "resource": "notifications"
    },
    {
      "name": "Mark All Notifications As Read",
      "value": "markAllNotificationsAsRead",
      "resource": "notifications"
    },
    {
      "name": "Search Users In Notifications",
      "value": "searchUsersInNotifications",
      "resource": "notifications"
    },
    {
      "name": "Update Notification Tabs Order",
      "value": "updateNotificationTabsOrder",
      "resource": "notifications"
    },
    {
      "name": "Get Settings",
      "value": "getSettings",
      "resource": "onlyFansSettings"
    },
    {
      "name": "Update Profile",
      "value": "updateProfile",
      "resource": "onlyFansSettings"
    },
    {
      "name": "Check Username Availability",
      "value": "checkUsernameAvailability",
      "resource": "onlyFansSettings"
    },
    {
      "name": "List Social Media Buttons",
      "value": "listSocialMediaButtons",
      "resource": "socialMediaButtons"
    },
    {
      "name": "Add Social Media Button",
      "value": "addSocialMediaButton",
      "resource": "socialMediaButtons"
    },
    {
      "name": "Update Social Media Button",
      "value": "updateSocialMediaButton",
      "resource": "socialMediaButtons"
    },
    {
      "name": "Delete Social Media Button",
      "value": "deleteSocialMediaButton",
      "resource": "socialMediaButtons"
    },
    {
      "name": "Reorder Social Media Button",
      "value": "reorderSocialMediaButtons",
      "resource": "socialMediaButtons"
    },
    {
      "name": "List Webhooks",
      "value": "listWebhooks",
      "resource": "webhooks"
    },
    {
      "name": "List Available Events",
      "value": "listAvailableEvents",
      "resource": "webhooks"
    },
    {
      "name": "Create Webhook",
      "value": "createWebhook",
      "resource": "webhooks"
    },
    {
      "name": "Show Webhook",
      "value": "showWebhook",
      "resource": "webhooks"
    },
    {
      "name": "Update Webhook",
      "value": "updateWebhook",
      "resource": "webhooks"
    },
    {
      "name": "Delete Webhook",
      "value": "deleteWebhook",
      "resource": "webhooks"
    },
    {
      "name": "Whoami",
      "value": "whoami",
      "resource": "apiKeys"
    },
    {
      "name": "Create Client Session",
      "value": "createClientSession",
      "resource": "clientSessions"
    }
  ]

npm_readme:
  # n8n-nodes-onlyfansapi
  ![Example workflow](/images/example.png)

  This is an n8n community node. It lets you use OnlyFans API in your n8n workflows.

  OnlyFans API is an unofficial API for OnlyFans, a popular content subscription service, to automate your workflows with ease.

  [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform.

  [Installation](#installation)
  [Operations](#operations)
  [Credentials](#credentials)
  [Compatibility](#compatibility)
  [Usage](#usage)
  [Resources](#resources)
  [Version history](#version-history)

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.

  ## Operations

  This node supports the following resources and operations:

  ### Account
  - **Get Account** - Get OnlyFans Profile details for an Account
  - **Get Many** - List many connected OnlyFans accounts
  - **Get Model Start Date** - Get the start date of the model (the date+time monetization was enabled)
  - **Disconnect Account** - Disconnect an OnlyFans account

  ### API Key
  - **Whoami** - Get details about the currently used API Key & the relevant Team

  ### Banking
  - **Get Account Country Details** - Returns the account owner's country details for banking
  - **Get Bank Payout Details** - Returns the account owner's bank payout details
  - **Get DAC7 Form Details** - Returns the account owner's DAC7 form information required for tax reporting
  - **Get Legal and Tax Status** - Returns the account owner's legal and tax status required for banking
  - **Get Legal Form Details** - Returns the account owner's legal form details for banking
  - **List Available Payout Systems** - Returns a list of available payout systems for the account
  - **List Countries** - Returns a list of countries available for banking configuration

  ### Chargeback
  - **Calculate Chargeback Ratio** - Calculate the chargeback ratio (chargebacks vs total payments)
  - **Get Many** - Retrieve a list of chargebacks within a specified date range
  - **List Chargeback Statistics** - List chargeback counts & amounts per hour, day or month

  ### Chat
  - **Get Many** - Get the list of chats for an Account
  - **List Chat Media (Gallery)** - List media files shared in a specific chat
  - **Mute Chat Notifications** - Mute notifications for a specific chat
  - **Start Typing Indicator** - Start the typing indicator for a specific chat
  - **Unmute Chat Notifications** - Unmute notifications for a specific chat

  ### Chat Message
  - **Delete Message** - Delete a message from a chat (only messages sent less than 24 hours ago)
  - **Get Many** - Get messages from a specific chat
  - **Like Message** - Like a chat message
  - **Pin Message** - Pin a message from a chat
  - **Send Message** - Send a new message to a chat
  - **Unlike Message** - Unlike a chat message
  - **Unpin Message** - Unpin a message from a chat

  ### Client Session
  - **Create Client Session** - Create Client Session Token for later use in embedded auth components

  ### Connect OnlyFans Account
  - **Poll Authentication Status** - Poll the status of the authentication process
  - **Re-Authenticate Account** - Trigger account reauthentication without the need to submit email & password again
  - **Start Authentication** - Start the authentication process for a new account
  - **Submit 2FA** - Submit the 2FA code for the authentication process

  ### Fan
  - **List Active Fans** - Get a paginated list of active fans for an Account
  - **List All Fans** - Get a paginated list of all fans for an Account
  - **List Expired Fans** - Get a paginated list of expired fans for an Account
  - **List Latest Fans** - Get a paginated list of latest fans for an Account
  - **Set Custom Name** - Change the fan's custom name shown in OnlyFans

  ### Following
  - **List Active Followings** - Get a paginated list of active followings for an Account
  - **List All Followings** - Get a paginated list of all followings for an Account
  - **List Expired Followings** - Get a paginated list of expired followings for an Account

  ### Free Trial Link
  - **Create Free Trial Link** - Create a free trial link for the account
  - **Delete Free Trial Link** - Delete a free trial link by its ID
  - **Get Many** - List many free trial links for the account, including the details and statistics
  - **List Free Trial Link Spenders** - Only available if we already scraped subscribers and calculated revenue per fan
  - **List Free Trial Link Subscribers** - Get list of subscribers who joined through a Free Trial Link

  ### Mass Messaging
  - **Get Mass Message** - Get the content of a mass message
  - **List Mass Message Queue** - List the pending or recently sent mass messages in the message queue
  - **List Mass Message Statistics** - List mass messaging statistics, showing the send count and view count
  - **Send Mass Message** - Send a mass message to lists and/or users
  - **Unsend/Delete Mass Message** - Unsend a recently sent mass message, or delete a scheduled/saved message
  - **Update Mass Message** - Update a mass message

  ### Media
  - **Scrape Media From The OnlyFans CDN** - Scrapes a https://cdn*.onlyfans.com/* URL and uploads it to the OnlyFans API CDN (max file size: 500MB)

  ### Media Vault
  - **Delete Vault Media** - Delete one or multiple media from your vault
  - **Get Many** - List media items stored in your vault

  ### Media Vault List
  - **Add Media To List** - Add one or multiple media to a list
  - **Create Vault List** - Create a new Vault list
  - **Delete Vault List** - Delete a Vault list
  - **Get Many** - List your Vault lists (categories)
  - **Remove Media From List** - Remove one or multiple media from a list
  - **Rename Vault List** - Rename a Vault list
  - **Show Vault List** - Show a Vault list

  ### Notification
  - **Get Many** - List many notifications for the account
  - **Get Notification Counts** - Get a quick overview of all unread notification types
  - **Get Notification Tabs Order** - Get the order of an account's notification tabs
  - **Mark All Notifications As Read** - Mark all notifications of this account as read
  - **Search Users In Notifications** - Search users that have appeared in your notifications
  - **Update Notification Tabs Order** - Update the order of an account's notification tabs

  ### Payout
  - **Get Account Balances** - Get the current available and pending balances for the account
  - **Get Earning Statistics** - Get total and monthly time-series earning statistics for the account
  - **Get Eligibility** - Get the eligibility details for receiving payouts
  - **List Payout Requests** - List all payout requests for the account
  - **List Transactions (Earnings)** - List all transactions for the account
  - **Request Manual Withdrawal** - Request a payout withdrawal, if the frequency is set to manual
  - **Update Payout Frequency** - Update the payout frequency for the account (Manual, Weekly or Monthly)

  ### Post
  - **Archive Post** - Archive a post from your account
  - **Delete Post** - Delete a post from your account
  - **Get** - Retrieve details of a post from your account
  - **Get Many** - Get posts from your OnlyFans account
  - **Pin/Unpin Post** - Pin or unpin a post to your account
  - **Send Post** - Compose and send a new post to your OnlyFans account
  - **Show Post Statistics** - Get statistics for a specific post
  - **Unarchive Post** - Unarchive a post from your account
  - **Update Post** - Update a posted, queued, or "saved for later" post

  ### Post Comment
  - **Create Comment** - Create a comment on one of your posts
  - **Delete Comment** - Delete a comment on one of your posts
  - **Get Many** - Get comments from one of your posts
  - **Like Comment** - Like a comment on one of your posts
  - **Pin Comment** - Pin a comment on one of your posts
  - **Unlike Comment** - Unlike a comment on one of your posts
  - **Unpin Comment** - Unpin a comment from one of your posts

  ### Post Label
  - **Create Label** - Create a new post label
  - **Get Many** - List the labels that you can use to organize your posts

  ### Public Profile
  - **Get** - Get profile details by username
  - **Search** - Full-text search for profiles with filters

  ### Queue
  - **Count Items** - Count posts and messages in the queue
  - **Get Many** - List posts and messages in the queue
  - **Publish Item** - Publish a queue item or "saved for later" item immediately

  ### Saved For Later Message
  - **Disable Automatic Messaging** - Disable automatic messaging of Saved For Later messages
  - **Enable Automatic Messaging** - Enable or update automatic messaging of Saved For Later messages
  - **Get Many** - List many messages that are marked as "Save For Later"
  - **Get Settings** - Get the Saved For Later message settings

  ### Saved For Later Post
  - **Disable Automatic Posting** - Disable automatic posting of Saved For Later posts
  - **Enable Automatic Posting** - Enable or update automatic posting of Saved For Later posts
  - **Get Many** - List many posts that are marked as "Save For Later"
  - **Get Settings** - Get the Saved For Later post settings

  ### Setting
  - **Check Username Availability** - Check if a username is taken
  - **Get Settings** - Returns the account settings
  - **Update Profile** - Update the account profile

  ### Statistic
  - **Calculate Total Transactions** - Calculate the total transactions and amounts
  - **Get Earnings** - Get the earnings for a given period
  - **Get Profile Visitors** - Get the number of profile visitors for a given period
  - **Get Subscriber Metrics** - Get subscriber metrics for a given period
  - **Get Subscriber Statistics** - Get subscriber statistics for a given period
  - **Overview** - Get an overview of statistics

  ### Tracking Link
  - **Create** - Create a new tracking link
  - **Delete** - Delete a tracking link
  - **Get Many** - List many tracking links for the account with revenue data
  - **Get Spenders** - Get list of spenders who made purchases through a tracking link
  - **Get Subscribers** - Get list of subscribers who joined through a tracking link

  ### Transaction
  - **Get Many** - Get a paginated list of transactions for an account (newest first)

  ### User
  - **Get** - Get OnlyFans profile details for a given username

  ### User List
  - **Add Users to User List** - Add multiple Users To OnlyFans User List
  - **Create User List** - Create a OnlyFans User List
  - **Delete User List** - Delete a OnlyFans User List
  - **Get** - Get a single user list
  - **Get Many** - Get a list of OnlyFans Collections - User Lists
  - **Get Users in List** - Get all users in a OnlyFans user list
  - **Remove User From a User List** - Remove User from OnlyFans User List
  - **Update User List** - Update a OnlyFans User List

  ### Webhook
  - **Create** - Create a new webhook for your team
  - **Delete** - Delete an existing webhook

  ## Credentials

  To make use of the OnlyFans API node, you must have an OnlyFans API account. Follow these simple steps:
  1. Sign up for an account at [OnlyFans API](https://app.onlyfansapi.com)
  2. Go to the OnlyFans API console -> API Keys
      ![API Keys navigation item](/images/api-keys/api-keys-nav-item.png)
  3. Create a new API key
      ![Create API Key button](/images/api-keys/create-api-key-button.png)
  4. Give it a name, and press "Add"
      ![API Key creation form](/images/api-keys/api-key-creation-form.png)
  5. Copy the API key to your clipboard
      ![Save API Key](/images/api-keys/save-api-key.png)
  6. In n8n, create a new credential for the OnlyFans API node, and paste the API key into the "API Key" field.

  ## Compatibility
  Tested with n8n version 1.115.0 and above. Earlier versions may work but are not officially supported.

  ## Usage
  ### Getting Started with n8n

  If you're new to n8n, check out the [Try it out](https://docs.n8n.io/try-it-out/) documentation to help you get started with the basics of building workflows.

  ### Understanding OnlyFans API

  Before using this node, we recommend familiarizing yourself with the [OnlyFans API documentation](https://docs.onlyfansapi.com/introduction) to understand:

  - What OnlyFans API is and what it offers
  - The available features and capabilities
  - How to work with OnlyFans accounts
  - Best practices for API usage

  The OnlyFans API platform provides a comprehensive REST API that allows you to interact with OnlyFans without needing to build your own proxy management system or reverse engineer the API. With this n8n node, you can easily integrate these capabilities into your automated workflows.

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [OnlyFans API introduction](https://docs.onlyfansapi.com/introduction)
  * [Connecting an OnlyFans account](https://docs.onlyfansapi.com/introduction/guides/connect-onlyfans-account)
  * [OnlyFans API credit structure](https://docs.onlyfansapi.com/introduction/essentials/credits)
  * [API reference](https://docs.onlyfansapi.com/api-reference)
  * [Webhooks](https://docs.onlyfansapi.com/webhooks)
  * [FAQ](https://docs.onlyfansapi.com/faq)

  ## Version history
  ### 0.1
  - Initial release with support for all OnlyFans API resources and operations.

ai_documentation_summary:
  {"purpose":"This n8n community node enables automation of OnlyFans workflows by providing access to the unofficial OnlyFans API for managing accounts, fans, media, messaging, and banking operations.","capabilities":["Manage OnlyFans accounts (create, disconnect, re-authenticate)","Retrieve account profile details and model start dates","List and manage fans (active, expired, latest)","Handle chat interactions (messages, media, notifications)","Send and manage mass messages","Manage media vault and CDN uploads (up to 500MB)","Configure banking and payout details","Generate and manage free trial links","Monitor chargeback statistics and ratios","Create client sessions for embedded authentication"],"authentication":"API Key required","commonUseCases":["Automated content distribution via mass messaging","Fan engagement and management workflows","Media organization and CDN uploads","Banking and tax compliance automation","Free trial link subscriber tracking"],"limitations":["Unofficial API (may not be fully supported by OnlyFans)","Chat message deletion limited to messages sent within 24 hours","Media upload size limit of 500MB","Free trial link features require prior scraping of subscribers"],"relatedNodes":["n8n HTTP Request","n8n Webhook","n8n Code Node"]}


node_type: n8n-nodes-trackpod.trackPod
package_name: n8n-nodes-trackpod
display_name: Track-POD
description: Interact with the Track-POD delivery management API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:36
author_name: bashlenix
author_github_url: https://github.com/Bashlenix/Trackpod_n8n_Custom_Node.git
npm_package_name: n8n-nodes-trackpod
npm_version: 0.1.5
community_fetched_at: 2026-04-16T09:43:36.046Z
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "order",
      "options": [
        {
          "name": "Order",
          "value": "order"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getDetails",
      "options": [
        {
          "name": "Create Orders",
          "value": "createOrders",
          "action": "Create orders",
          "description": "Create one or more unscheduled orders (bulk)"
        },
        {
          "name": "Delete Order",
          "value": "deleteOrder",
          "action": "Delete order",
          "description": "Delete an order by Number or ID"
        },
        {
          "name": "Get Details",
          "value": "getDetails",
          "action": "Get order details",
          "description": "Retrieve order details by Number, ID or Tracking-ID"
        },
        {
          "name": "Update Order",
          "value": "updateOrder",
          "action": "Update order",
          "description": "Update an existing order"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "order"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create Orders",
      "value": "createOrders",
      "action": "Create orders",
      "description": "Create one or more unscheduled orders (bulk)",
      "resource": "order"
    },
    {
      "name": "Delete Order",
      "value": "deleteOrder",
      "action": "Delete order",
      "description": "Delete an order by Number or ID",
      "resource": "order"
    },
    {
      "name": "Get Details",
      "value": "getDetails",
      "action": "Get order details",
      "description": "Retrieve order details by Number, ID or Tracking-ID",
      "resource": "order"
    },
    {
      "name": "Update Order",
      "value": "updateOrder",
      "action": "Update order",
      "description": "Update an existing order",
      "resource": "order"
    }
  ]

npm_readme:
  # n8n-nodes-trackpod

  This is an n8n community node. It lets you use [Track-POD](https://track-pod.com) in your n8n workflows.

  Track-POD is a delivery management platform that provides route optimization, electronic proof of delivery, and real-time driver tracking for logistics operations.

  [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform.

  [Installation](#installation)  
  [Operations](#operations)  
  [Credentials](#credentials)  
  [Compatibility](#compatibility)  
  [Usage](#usage)  
  [Resources](#resources)  
  [Version history](#version-history)  

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.

  ## Operations

  ### Action node — Track-POD

  | Resource | Operation | API endpoint |
  |---|---|---|
  | Order | Get Details | `GET /order/{getBy}/{key}` |
  | Order | Create Orders | `POST /order/bulk` |
  | Order | Update Order | `PUT /order` |
  | Order | Delete Order | `DELETE /Order/{deleteBy}/{key}` |

  ### Trigger node — Track-POD Trigger

  | Event | Track-POD webhook events |
  |---|---|
  | New / Updated Route | RouteCreated, RouteUpdated |
  | Deleted Route | RouteDeleted |
  | New / Updated Order | OrderCreated, OrderUpdated |
  | Deleted Order | OrderDeleted |

  ## Credentials

  1. In n8n go to **Credentials → New**.
  2. Search for **Track-POD API**.
  3. Paste your API key — find it at [Track-POD → Settings → Integrations → Web API](https://web.track-pod.com/en/settings/integrations/web-api).
  4. Click **Test** to verify, then **Save**.

  ## Compatibility

  Tested with n8n self-hosted. Requires Node.js ≥ 16.

  ## Usage

  ### Action node

  #### Get Details

  Looks up a single order. Returns the full order object, or an empty `{}` on 404 / 410 (order not found or deleted) rather than failing — downstream nodes can check for missing fields to branch.

  | Field | Description |
  |---|---|
  | **Get By** | `Number` · `ID` · `Tracking-ID` |
  | **Order Number / Order ID / Tracking ID** | The lookup key (shown conditionally) |

  #### Create Orders

  Collects **all input items** into one array and sends them in a single `POST /order/bulk` call. Returns one output item with the API response.

  | Field | Description |
  |---|---|
  | **Client / Customer Name** | Required by Track-POD |
  | **Address** | Required by Track-POD |
  | **Force Update Address GPS** | Updates Lat/Lon in the Addresses directory |
  | **Force Update Goods Price** | Updates Price in the Goods directory |
  | **Additional Fields** | All other optional order fields (Number, Date, Type, GoodsList, etc.) |

  `GoodsList` and `CustomFields` in Additional Fields accept a JSON array string, e.g. `[{"GoodsName":"Item A","Quantity":2,"GoodsUnit":"pcs"}]`.

  #### Update Order

  Sends `PUT /order` per input item. Include at least **ID** or **Number** in Order Fields to identify which order to update. Only the most recent matching order is updated.

  | Field | Description |
  |---|---|
  | **Force Update Address GPS** | Updates Lat/Lon in the Addresses directory |
  | **Order Fields** | Collection of all order fields including Id, Number, Client, Address, etc. |

  #### Delete Order

  Sends `DELETE /Order/{deleteBy}/{key}` per input item.

  | Field | Description |
  |---|---|
  | **Delete By** | `Number` · `ID` |
  | **Order Number / Order ID** | The key (shown conditionally) |

  ### Trigger node

  Add a **Track-POD Trigger** node to start a workflow from a Track-POD webhook event.

  1. Select the **Event** you want to listen for.
  2. **Activate** the workflow — the Webhook URL appears in the node.
  3. Copy the Webhook URL and register it in [Track-POD → Settings → Integrations → Webhooks](https://web.track-pod.com/en/settings/integrations/webhooks).
  4. In the Track-POD webhook settings, enable the corresponding events (shown as a notice in the node UI).

  Each trigger node instance has its own URL. If you need to handle multiple event types in one workflow, add one trigger node per event and register each URL separately in Track-POD.

  #### Output structure

  All trigger events pass the raw Track-POD webhook payload as-is:

  ```json
  {
    "Metadata": {
      "Event": "OrderCreated",
      "Date": "2024-01-15T10:30:00Z"
    },
    "Data": { }
  }
  ```

  `Data` shape per event:

  | Event | Data fields |
  |---|---|
  | New / Updated Route | Full route object (Code, Date, Depot, DriverName, Orders array, …) |
  | Deleted Route | `Code`, `Date` |
  | New / Updated Order | Full order object (Number, Client, Address, Status, GoodsList, …) |
  | Deleted Order | `Number`, `Date`, `Type`, `Note`, `Weight`, `Volume`, `Pallets`, `COD`, `DeletedBy`, `DeletedDate` |

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [Track-POD API documentation](https://docs.track-pod.com)
  * [Track-POD website](https://track-pod.com)

  ## Version history

  **0.1.0** — Initial release with Order CRUD operations and webhook trigger support.

  ## License

  [MIT](LICENSE.md)


node_type: n8n-nodes-checkmk.checkmk
package_name: n8n-nodes-checkmk
display_name: Checkmk
description: Complete Checkmk monitoring system integration with 100% API coverage
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:36
author_name: marcoandredg
author_github_url: https://github.com/LynxmindRepo/
npm_package_name: n8n-nodes-checkmk
npm_version: 1.1.1
community_fetched_at: 2026-04-16T09:43:36.050Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "host",
      "options": [
        {
          "name": "Activate Change",
          "value": "activateChanges"
        },
        {
          "name": "Agent",
          "value": "agent"
        },
        {
          "name": "Audit Log",
          "value": "auditLog"
        },
        {
          "name": "Aux Tag",
          "value": "auxTag"
        },
        {
          "name": "Background Job",
          "value": "backgroundJob"
        },
        {
          "name": "BI Aggregation",
          "value": "biAggregation"
        },
        {
          "name": "BI Pack",
          "value": "biPack"
        },
        {
          "name": "BI Rule",
          "value": "biRule"
        },
        {
          "name": "Broker Connection",
          "value": "brokerConnection"
        },
        {
          "name": "Certificate",
          "value": "certificate"
        },
        {
          "name": "Comment",
          "value": "comment"
        },
        {
          "name": "Configuration Entity",
          "value": "configurationEntity"
        },
        {
          "name": "Contact Group",
          "value": "contactGroup"
        },
        {
          "name": "DCD",
          "value": "dcd"
        },
        {
          "name": "Discovery",
          "value": "discovery"
        },
        {
          "name": "Downtime",
          "value": "downtime"
        },
        {
          "name": "Event Console",
          "value": "eventConsole"
        },
        {
          "name": "Folder",
          "value": "folder"
        },
        {
          "name": "Host",
          "value": "host"
        },
        {
          "name": "Host Group",
          "value": "hostGroup"
        },
        {
          "name": "Host Status",
          "value": "hostStatus"
        },
        {
          "name": "Host Tag Group",
          "value": "hostTagGroup"
        },
        {
          "name": "LDAP Connection",
          "value": "ldapConnection"
        },
        {
          "name": "License Usage",
          "value": "licenseUsage"
        },
        {
          "name": "Metric",
          "value": "metric"
        },
        {
          "name": "Notification Rule",
          "value": "notificationRule"
        },
        {
          "name": "OpenTelemetry",
          "value": "openTelemetry"
        },
        {
          "name": "Parent Scan",
          "value": "parentScan"
        },
        {
          "name": "Password",
          "value": "password"
        },
        {
          "name": "Problem",
          "value": "problem"
        },
        {
          "name": "Quick Setup",
          "value": "quickSetup"
        },
        {
          "name": "Rule",
          "value": "rule"
        },
        {
          "name": "Ruleset",
          "value": "ruleset"
        },
        {
          "name": "SAML Connection",
          "value": "samlConnection"
        },
        {
          "name": "Service",
          "value": "service"
        },
        {
          "name": "Service Group",
          "value": "serviceGroup"
        },
        {
          "name": "Service Status",
          "value": "serviceStatus"
        },
        {
          "name": "Site",
          "value": "site"
        },
        {
          "name": "SLA",
          "value": "sla"
        },
        {
          "name": "Time Period",
          "value": "timePeriod"
        },
        {
          "name": "User",
          "value": "user"
        },
        {
          "name": "User Role",
          "value": "userRole"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a host",
          "description": "Create a new host"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a host",
          "description": "Delete a host"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a host",
          "description": "Get a host"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many hosts",
          "description": "Get many hosts"
        },
        {
          "name": "Move",
          "value": "move",
          "action": "Move a host",
          "description": "Move host to different folder"
        },
        {
          "name": "Rename",
          "value": "rename",
          "action": "Rename a host",
          "description": "Rename a host"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a host",
          "description": "Update a host"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "host"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a host group",
          "description": "Create a host group"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a host group",
          "description": "Delete a host group"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a host group",
          "description": "Get a host group"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many host groups",
          "description": "Get many host groups"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a host group",
          "description": "Update a host group"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "hostGroup"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a service group",
          "description": "Create a service group"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a service group",
          "description": "Delete a service group"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a service group",
          "description": "Get a service group"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many service groups",
          "description": "Get many service groups"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a service group",
          "description": "Update a service group"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "serviceGroup"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a folder",
          "description": "Create a folder"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a folder",
          "description": "Delete a folder"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a folder",
          "description": "Get a folder"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many folders",
          "description": "Get many folders"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a folder",
          "description": "Update a folder"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "folder"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a user",
          "description": "Create a user"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a user",
          "description": "Delete a user"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a user",
          "description": "Get a user"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many users",
          "description": "Get many users"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a user",
          "description": "Update a user"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a contact group",
          "description": "Create a contact group"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a contact group",
          "description": "Delete a contact group"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a contact group",
          "description": "Get a contact group"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many contact groups",
          "description": "Get many contact groups"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a contact group",
          "description": "Update a contact group"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "contactGroup"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a time period",
          "description": "Create a time period"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a time period",
          "description": "Delete a time period"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a time period",
          "description": "Get a time period"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many time periods",
          "description": "Get many time periods"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a time period",
          "description": "Update a time period"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "timePeriod"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a rule",
          "description": "Get a rule"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many rules",
          "description": "Get many rules"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "rule"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "run",
      "options": [
        {
          "name": "Run",
          "value": "run",
          "action": "Run discovery",
          "description": "Run service discovery"
        },
        {
          "name": "Get Status",
          "value": "getStatus",
          "action": "Get discovery status",
          "description": "Get discovery status"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "discovery"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "activate",
      "options": [
        {
          "name": "Activate",
          "value": "activate",
          "action": "Activate changes",
          "description": "Activate pending changes"
        },
        {
          "name": "Get Pending",
          "value": "getPending",
          "action": "Get pending changes",
          "description": "Get pending changes"
        },
        {
          "name": "Get Status",
          "value": "getStatus",
          "action": "Get activation status",
          "description": "Get activation status"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "activateChanges"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a site",
          "description": "Get a site"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many sites",
          "description": "Get many sites"
        },
        {
          "name": "Login",
          "value": "login",
          "action": "Login to site",
          "description": "Login to a site"
        },
        {
          "name": "Logout",
          "value": "logout",
          "action": "Logout from site",
          "description": "Logout from a site"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "site"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get a service",
          "description": "Get a service"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many services",
          "description": "Get many services"
        },
        {
          "name": "Acknowledge Problem",
          "value": "acknowledge",
          "action": "Acknowledge a service problem",
          "description": "Acknowledge a service problem"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "service"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a downtime",
          "description": "Create a downtime"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a downtime",
          "description": "Delete a downtime"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a downtime",
          "description": "Get a downtime"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many downtimes",
          "description": "Get many downtimes"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "downtime"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many problems",
          "description": "Get many problems"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "problem"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getState",
      "options": [
        {
          "name": "Get State",
          "value": "getState",
          "action": "Get BI aggregation state",
          "description": "Get BI aggregation state"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "biAggregation"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many BI packs",
          "description": "Get many BI packs"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "biPack"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many BI rules",
          "description": "Get many BI rules"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "biRule"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a comment",
          "description": "Create a comment"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many comments",
          "description": "Get many comments"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a comment",
          "description": "Delete a comment"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "comment"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many event console entries",
          "description": "Get many event console entries"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "eventConsole"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many host statuses",
          "description": "Get many host statuses"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "hostStatus"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many metrics",
          "description": "Get many metrics"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "metric"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many service statuses",
          "description": "Get many service statuses"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "serviceStatus"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "compute",
      "options": [
        {
          "name": "Compute",
          "value": "compute",
          "action": "Compute SLA data",
          "description": "Compute SLA data"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "sla"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many agents",
          "description": "Get many agents"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "agent"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many audit logs",
          "description": "Get many audit logs"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "auditLog"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create an aux tag",
          "description": "Create an aux tag"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many aux tags",
          "description": "Get many aux tags"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update an aux tag",
          "description": "Update an aux tag"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete an aux tag",
          "description": "Delete an aux tag"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "auxTag"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a host tag group",
          "description": "Create a host tag group"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many host tag groups",
          "description": "Get many host tag groups"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a host tag group",
          "description": "Update a host tag group"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a host tag group",
          "description": "Delete a host tag group"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "hostTagGroup"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create an LDAP connection",
          "description": "Create an LDAP connection"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many LDAP connections",
          "description": "Get many LDAP connections"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update an LDAP connection",
          "description": "Update an LDAP connection"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete an LDAP connection",
          "description": "Delete an LDAP connection"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "ldapConnection"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many notification rules",
          "description": "Get many notification rules"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "notificationRule"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create an open telemetry collector",
          "description": "Create an OpenTelemetry collector"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many open telemetry collectors",
          "description": "Get many OpenTelemetry collectors"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update an open telemetry collector",
          "description": "Update an OpenTelemetry collector"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete an open telemetry collector",
          "description": "Delete an OpenTelemetry collector"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "openTelemetry"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "run",
      "options": [
        {
          "name": "Run",
          "value": "run",
          "action": "Run parent scan",
          "description": "Run parent scan"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "parentScan"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many passwords",
          "description": "Get many passwords"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "password"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many rulesets",
          "description": "Get many rulesets"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "ruleset"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a SAML connection",
          "description": "Create a SAML connection"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many SAML connections",
          "description": "Get many SAML connections"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a SAML connection",
          "description": "Update a SAML connection"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a SAML connection",
          "description": "Delete a SAML connection"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "samlConnection"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a user role",
          "description": "Create a user role"
        },
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many user roles",
          "description": "Get many user roles"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a user role",
          "description": "Update a user role"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a user role",
          "description": "Delete a user role"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "userRole"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many background jobs",
          "description": "Get many background jobs"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "backgroundJob"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many broker connections",
          "description": "Get many broker connections"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "brokerConnection"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many certificates",
          "description": "Get many certificates"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "certificate"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many configuration entities",
          "description": "Get many configuration entities"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "configurationEntity"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many DCD configurations",
          "description": "Get many DCD configurations"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "dcd"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get license usage",
          "description": "Get license usage"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "licenseUsage"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getMany",
      "options": [
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many quick setup configurations",
          "description": "Get many quick setup configurations"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "quickSetup"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create a host",
      "description": "Create a new host",
      "resource": "host"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a host",
      "description": "Delete a host",
      "resource": "host"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a host",
      "description": "Get a host",
      "resource": "host"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many hosts",
      "description": "Get many hosts",
      "resource": "host"
    },
    {
      "name": "Move",
      "value": "move",
      "action": "Move a host",
      "description": "Move host to different folder",
      "resource": "host"
    },
    {
      "name": "Rename",
      "value": "rename",
      "action": "Rename a host",
      "description": "Rename a host",
      "resource": "host"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a host",
      "description": "Update a host",
      "resource": "host"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a host group",
      "description": "Create a host group",
      "resource": "hostGroup"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a host group",
      "description": "Delete a host group",
      "resource": "hostGroup"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a host group",
      "description": "Get a host group",
      "resource": "hostGroup"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many host groups",
      "description": "Get many host groups",
      "resource": "hostGroup"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a host group",
      "description": "Update a host group",
      "resource": "hostGroup"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a service group",
      "description": "Create a service group",
      "resource": "serviceGroup"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a service group",
      "description": "Delete a service group",
      "resource": "serviceGroup"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a service group",
      "description": "Get a service group",
      "resource": "serviceGroup"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many service groups",
      "description": "Get many service groups",
      "resource": "serviceGroup"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a service group",
      "description": "Update a service group",
      "resource": "serviceGroup"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a folder",
      "description": "Create a folder",
      "resource": "folder"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a folder",
      "description": "Delete a folder",
      "resource": "folder"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a folder",
      "description": "Get a folder",
      "resource": "folder"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many folders",
      "description": "Get many folders",
      "resource": "folder"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a folder",
      "description": "Update a folder",
      "resource": "folder"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a user",
      "description": "Create a user",
      "resource": "user"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a user",
      "description": "Delete a user",
      "resource": "user"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a user",
      "description": "Get a user",
      "resource": "user"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many users",
      "description": "Get many users",
      "resource": "user"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a user",
      "description": "Update a user",
      "resource": "user"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a contact group",
      "description": "Create a contact group",
      "resource": "contactGroup"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a contact group",
      "description": "Delete a contact group",
      "resource": "contactGroup"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a contact group",
      "description": "Get a contact group",
      "resource": "contactGroup"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many contact groups",
      "description": "Get many contact groups",
      "resource": "contactGroup"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a contact group",
      "description": "Update a contact group",
      "resource": "contactGroup"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a time period",
      "description": "Create a time period",
      "resource": "timePeriod"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a time period",
      "description": "Delete a time period",
      "resource": "timePeriod"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a time period",
      "description": "Get a time period",
      "resource": "timePeriod"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many time periods",
      "description": "Get many time periods",
      "resource": "timePeriod"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a time period",
      "description": "Update a time period",
      "resource": "timePeriod"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a rule",
      "description": "Get a rule",
      "resource": "rule"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many rules",
      "description": "Get many rules",
      "resource": "rule"
    },
    {
      "name": "Run",
      "value": "run",
      "action": "Run discovery",
      "description": "Run service discovery",
      "resource": "discovery"
    },
    {
      "name": "Get Status",
      "value": "getStatus",
      "action": "Get discovery status",
      "description": "Get discovery status",
      "resource": "discovery"
    },
    {
      "name": "Activate",
      "value": "activate",
      "action": "Activate changes",
      "description": "Activate pending changes",
      "resource": "activateChanges"
    },
    {
      "name": "Get Pending",
      "value": "getPending",
      "action": "Get pending changes",
      "description": "Get pending changes",
      "resource": "activateChanges"
    },
    {
      "name": "Get Status",
      "value": "getStatus",
      "action": "Get activation status",
      "description": "Get activation status",
      "resource": "activateChanges"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a site",
      "description": "Get a site",
      "resource": "site"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many sites",
      "description": "Get many sites",
      "resource": "site"
    },
    {
      "name": "Login",
      "value": "login",
      "action": "Login to site",
      "description": "Login to a site",
      "resource": "site"
    },
    {
      "name": "Logout",
      "value": "logout",
      "action": "Logout from site",
      "description": "Logout from a site",
      "resource": "site"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a service",
      "description": "Get a service",
      "resource": "service"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many services",
      "description": "Get many services",
      "resource": "service"
    },
    {
      "name": "Acknowledge Problem",
      "value": "acknowledge",
      "action": "Acknowledge a service problem",
      "description": "Acknowledge a service problem",
      "resource": "service"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a downtime",
      "description": "Create a downtime",
      "resource": "downtime"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a downtime",
      "description": "Delete a downtime",
      "resource": "downtime"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a downtime",
      "description": "Get a downtime",
      "resource": "downtime"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many downtimes",
      "description": "Get many downtimes",
      "resource": "downtime"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many problems",
      "description": "Get many problems",
      "resource": "problem"
    },
    {
      "name": "Get State",
      "value": "getState",
      "action": "Get BI aggregation state",
      "description": "Get BI aggregation state",
      "resource": "biAggregation"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many BI packs",
      "description": "Get many BI packs",
      "resource": "biPack"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many BI rules",
      "description": "Get many BI rules",
      "resource": "biRule"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a comment",
      "description": "Create a comment",
      "resource": "comment"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many comments",
      "description": "Get many comments",
      "resource": "comment"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a comment",
      "description": "Delete a comment",
      "resource": "comment"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many event console entries",
      "description": "Get many event console entries",
      "resource": "eventConsole"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many host statuses",
      "description": "Get many host statuses",
      "resource": "hostStatus"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many metrics",
      "description": "Get many metrics",
      "resource": "metric"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many service statuses",
      "description": "Get many service statuses",
      "resource": "serviceStatus"
    },
    {
      "name": "Compute",
      "value": "compute",
      "action": "Compute SLA data",
      "description": "Compute SLA data",
      "resource": "sla"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many agents",
      "description": "Get many agents",
      "resource": "agent"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many audit logs",
      "description": "Get many audit logs",
      "resource": "auditLog"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create an aux tag",
      "description": "Create an aux tag",
      "resource": "auxTag"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many aux tags",
      "description": "Get many aux tags",
      "resource": "auxTag"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update an aux tag",
      "description": "Update an aux tag",
      "resource": "auxTag"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete an aux tag",
      "description": "Delete an aux tag",
      "resource": "auxTag"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a host tag group",
      "description": "Create a host tag group",
      "resource": "hostTagGroup"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many host tag groups",
      "description": "Get many host tag groups",
      "resource": "hostTagGroup"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a host tag group",
      "description": "Update a host tag group",
      "resource": "hostTagGroup"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a host tag group",
      "description": "Delete a host tag group",
      "resource": "hostTagGroup"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create an LDAP connection",
      "description": "Create an LDAP connection",
      "resource": "ldapConnection"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many LDAP connections",
      "description": "Get many LDAP connections",
      "resource": "ldapConnection"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update an LDAP connection",
      "description": "Update an LDAP connection",
      "resource": "ldapConnection"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete an LDAP connection",
      "description": "Delete an LDAP connection",
      "resource": "ldapConnection"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many notification rules",
      "description": "Get many notification rules",
      "resource": "notificationRule"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create an open telemetry collector",
      "description": "Create an OpenTelemetry collector",
      "resource": "openTelemetry"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many open telemetry collectors",
      "description": "Get many OpenTelemetry collectors",
      "resource": "openTelemetry"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update an open telemetry collector",
      "description": "Update an OpenTelemetry collector",
      "resource": "openTelemetry"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete an open telemetry collector",
      "description": "Delete an OpenTelemetry collector",
      "resource": "openTelemetry"
    },
    {
      "name": "Run",
      "value": "run",
      "action": "Run parent scan",
      "description": "Run parent scan",
      "resource": "parentScan"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many passwords",
      "description": "Get many passwords",
      "resource": "password"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many rulesets",
      "description": "Get many rulesets",
      "resource": "ruleset"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a SAML connection",
      "description": "Create a SAML connection",
      "resource": "samlConnection"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many SAML connections",
      "description": "Get many SAML connections",
      "resource": "samlConnection"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a SAML connection",
      "description": "Update a SAML connection",
      "resource": "samlConnection"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a SAML connection",
      "description": "Delete a SAML connection",
      "resource": "samlConnection"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a user role",
      "description": "Create a user role",
      "resource": "userRole"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many user roles",
      "description": "Get many user roles",
      "resource": "userRole"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a user role",
      "description": "Update a user role",
      "resource": "userRole"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a user role",
      "description": "Delete a user role",
      "resource": "userRole"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many background jobs",
      "description": "Get many background jobs",
      "resource": "backgroundJob"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many broker connections",
      "description": "Get many broker connections",
      "resource": "brokerConnection"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many certificates",
      "description": "Get many certificates",
      "resource": "certificate"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many configuration entities",
      "description": "Get many configuration entities",
      "resource": "configurationEntity"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many DCD configurations",
      "description": "Get many DCD configurations",
      "resource": "dcd"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get license usage",
      "description": "Get license usage",
      "resource": "licenseUsage"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many quick setup configurations",
      "description": "Get many quick setup configurations",
      "resource": "quickSetup"
    }
  ]

npm_readme:
  # n8n-nodes-checkmk

  This is an n8n community node. It lets you use Checkmk in your n8n workflows.

  Checkmk is an IT monitoring platform for hybrid infrastructure, providing observability for servers, networks, cloud services, and applications from a single dashboard.

  [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform.

  ## Documentation

  For complete documentation including installation, operations, credentials, usage examples, and troubleshooting, see [DOCUMENTATION.md](DOCUMENTATION.md).

ai_documentation_summary:
  {"purpose":"This n8n community node enables integration with the Checkmk IT monitoring platform, allowing workflow automation with 100% API coverage for servers, networks, cloud services, and applications.","capabilities":["Checkmk API integration","Workflow automation for monitoring systems","Full API coverage support","Hybrid infrastructure observability"],"authentication":"See DOCUMENTATION.md for credentials setup","commonUseCases":["Automated monitoring alerts","Server status checks","Network monitoring automation","Cloud service observability"],"limitations":["Community node (not official n8n node)","Full documentation in separate DOCUMENTATION.md file"],"relatedNodes":["Checkmk API node","Monitoring nodes","Alerting nodes"]}


node_type: @brontoio/n8n-nodes-bronto.bronto
package_name: @brontoio/n8n-nodes-bronto
display_name: Bronto
description: Search logs via the Bronto.io API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:36
author_name: seamus_brontoio
author_github_url: https://github.com/seamusc/n8n-nodes-bronto.git
npm_package_name: @brontoio/n8n-nodes-bronto
npm_version: 0.1.3
community_fetched_at: 2026-04-16T09:43:36.051Z
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "executeSearch",
      "options": [
        {
          "name": "Search",
          "value": "executeSearch",
          "action": "Search log data",
          "description": "Search log data"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Search",
      "value": "executeSearch",
      "action": "Search log data",
      "description": "Search log data"
    }
  ]

npm_readme:
  # @brontoio/n8n-nodes-bronto

  An [n8n](https://n8n.io/) community node for the [Bronto.io](https://bronto.io) log management platform.

  Search and query your Bronto log data directly from n8n workflows.

  [Installation](#installation)
  [Operations](#operations)
  [Credentials](#credentials)
  [Usage](#usage)
  [Resources](#resources)

  ## Installation

  ### In n8n (Community Nodes)

  1. Open **Settings > Community Nodes**
  2. Enter `@brontoio/n8n-nodes-bronto`
  3. Click **Install**

  ### Manual

  ```bash
  cd ~/.n8n
  npm install @brontoio/n8n-nodes-bronto
  ```

  Restart n8n after installation.

  ## Operations

  - **Search logs** — query log datasets using Bronto's Search API
  - **Dynamic log selection** — pick logs from a dropdown populated from your account
  - **Tag-based search** — search by tags instead of specific datasets
  - **Aggregations** — use `count()`, `sum()`, `avg()`, `min()`, `max()` with optional group-by
  - **Pagination** — optionally follow `next_page_url` to retrieve all results
  - **Multi-region** — supports both EU and US Bronto regions

  ## Credentials

  1. In n8n, go to **Credentials > New Credential > Bronto API**
  2. Select your **Region** (EU or US)
  3. Enter your **API Key**
  4. Click **Test** to verify the connection

  API keys can be generated from the [Bronto.io dashboard](https://bronto.io).

  ## Usage

  ### Node Parameters

  | Parameter | Description |
  |-----------|-------------|
  | **Source Type** | Search by log datasets or tags |
  | **Logs** | Multi-select dropdown of available log datasets (fetched from your account) |
  | **Time Range** | Relative time range, e.g. `Last 1 hour`, `Last 2 days` |
  | **Where** | SQL-like filter expression, e.g. `level:error AND duration_ms>2000` |
  | **Select** | Comma-separated columns or aggregates, e.g. `*, @raw` or `count()` |
  | **Groups** | Key to group aggregate results by |
  | **Limit** | Max results to return (1–6666, default 100) |

  ### Additional Options

  | Option | Description |
  |--------|-------------|
  | **Most Recent First** | Return newest results first (default: true) |
  | **Number of Slices** | Time series buckets for aggregate queries |
  | **From/To Timestamp** | Absolute time range in Unix milliseconds |
  | **Paginate** | Automatically fetch all pages of results |

  ### Example

  1. Add a **Bronto** node to your workflow
  2. Select one or more logs from the dropdown
  3. Set a time range and optional filters
  4. Execute the node to retrieve matching log events

  Results are returned as individual items — one per log event (or per aggregate group) — ready to be processed by downstream nodes.

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [Bronto.io documentation](https://bronto.io)

  ## Development

  ```bash
  # Install dependencies
  npm install

  # Build
  npm run build

  # Run locally with Docker
  docker compose up --build -d
  # Open http://localhost:5678
  ```

  ## License

  [MIT](LICENSE)


node_type: n8n-nodes-medullar.medullar
package_name: n8n-nodes-medullar
display_name: Medullar
description: AI-powered discovery & insight platform that acts as your extended digital mind.
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:36
author_name: medullar_solutions
author_github_url: https://github.com/medullar/n8n-node.git
npm_package_name: n8n-nodes-medullar
npm_version: 1.0.5
community_fetched_at: 2026-04-16T09:43:36.052Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "space",
      "options": [
        {
          "name": "Space",
          "value": "space"
        }
      ],
      "required": true,
      "description": "Interact with a Medullar Space",
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list-space",
      "options": [
        {
          "name": "Add Space Record",
          "value": "add-record",
          "action": "Add record to space",
          "description": "Adds a Record into a Space"
        },
        {
          "name": "Ask Space",
          "value": "ask-space",
          "action": "Ask a question to a space",
          "description": "Ask anything to a Space"
        },
        {
          "name": "Create Space",
          "value": "create-new-space",
          "action": "Create new space",
          "description": "Create a new Space"
        },
        {
          "name": "Delete Space",
          "value": "delete-space",
          "action": "Delete a space",
          "description": "Delete a Space"
        },
        {
          "name": "List Spaces",
          "value": "list-space",
          "action": "List all spaces",
          "description": "List all user Spaces"
        },
        {
          "name": "Rename Space",
          "value": "rename-space",
          "action": "Rename a space",
          "description": "Rename a Space"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "space"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Add Space Record",
      "value": "add-record",
      "action": "Add record to space",
      "description": "Adds a Record into a Space",
      "resource": "space"
    },
    {
      "name": "Ask Space",
      "value": "ask-space",
      "action": "Ask a question to a space",
      "description": "Ask anything to a Space",
      "resource": "space"
    },
    {
      "name": "Create Space",
      "value": "create-new-space",
      "action": "Create new space",
      "description": "Create a new Space",
      "resource": "space"
    },
    {
      "name": "Delete Space",
      "value": "delete-space",
      "action": "Delete a space",
      "description": "Delete a Space",
      "resource": "space"
    },
    {
      "name": "List Spaces",
      "value": "list-space",
      "action": "List all spaces",
      "description": "List all user Spaces",
      "resource": "space"
    },
    {
      "name": "Rename Space",
      "value": "rename-space",
      "action": "Rename a space",
      "description": "Rename a Space",
      "resource": "space"
    }
  ]

npm_readme:
  ![Banner image](https://user-images.githubusercontent.com/10284570/173569848-c624317f-42b1-45a6-ab09-f0ea3c247648.png)

  # n8n-nodes-medullar

  ![Icon image](https://cdn.medullar.com/images/web/logo/medullar_favicon_128x128.png)

  This is an [n8n](https://n8n.io) community node that lets you integrate seamlessly with Medullar’s collaborative knowledge platform in your n8n workflows [Medullar](https://medullar.com).

  **Medullar** is an AI-powered workspace for actionable team intelligence—capturing insights, connecting conversations, and automating knowledge sharing across your daily tools. With this node, you can connect to your Medullar Spaces, fetch key insights, trigger knowledge actions, and weave Medullar’s contextual smarts directly into your workflow automation.

  Use this node to unify scattered information, automate knowledge handoffs, and bridge project data—so your workflows become not just automated, but genuinely intelligent.

  [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform.

  ## Features
  - **List Spaces**: Retrieve all your Medullar Spaces to keep track of your collaborative environments.
  - **Create Space**: Easily create new Spaces to organize your projects and knowledge.
  - **Add Space Record**: Add various types of content to your Spaces including text, URLs, images, and files to build your knowledge base.
  - **Ask Space**: Interact with your Medullar Spaces using multiple AI modes:
    - MedullaryAI Agent (OpenAI and xAI Grok variants)
    - MedullaryAI Fact Check for verification
    - MedullaryAI Researcher for in-depth analysis
    - MedullaryAI Sales Researcher for sales intelligence
    - MedullaryAI Search Agent for targeted searches
    - Optional Deep Analysis for more accurate but slower responses
  - **Rename Space**: Update the name of existing Spaces to better reflect their purpose.
  - **Delete Space**: Remove Spaces that are no longer needed to keep your workspace organized.

  ## Credentials

  To use this node, you need to set up credentials for Medullar. You can find your API key in your Medullar account settings.

  ## Compatibility

  - Requires n8n version 1.0.0 or later
  - Requires Medullar paid plan

  ## Resources
  - [n8n Documentation](https://docs.n8n.io)
  - [Medullar](https://www.medullar.com)

  ## License

  [MIT](https://github.com/n8n-io/n8n-nodes-starter/blob/master/LICENSE.md)

ai_documentation_summary:
  {"purpose":"Integrates Medullar's AI-powered collaborative knowledge platform into n8n workflows to manage spaces, retrieve insights, and trigger knowledge-based actions.","capabilities":["List Medullar Spaces","Create new Spaces","Add content to Spaces (text, URLs, images, files)","Rename Spaces","Delete Spaces","Query Spaces using MedullaryAI Agent","Verify facts using MedullaryAI Fact Check","Conduct in-depth analysis using MedullaryAI Researcher","Gather sales intelligence using MedullaryAI Sales Researcher","Perform targeted searches using MedullaryAI Search Agent"],"authentication":"API key required","commonUseCases":["Automating knowledge sharing across team tools","Unifying scattered information into centralized Spaces","Integrating AI-driven insights into workflow automation","Conducting sales research and fact-checking within workflows"],"limitations":["Requires a Medullar paid plan subscription","Requires n8n version 1.0.0 or later"],"relatedNodes":["Medullar","OpenAI","xAI Grok"]}


node_type: n8n-nodes-graphorlm.graphorTool
package_name: n8n-nodes-graphorlm
display_name: Graphor Tool
description: Ask questions about documents using Graphor AI - designed for use with AI Agents
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:36
author_name: thiagohirano
author_github_url: https://github.com/thiagohirano/
npm_package_name: n8n-nodes-graphorlm
npm_version: 0.1.12
community_fetched_at: 2026-04-16T09:43:36.053Z
ai_summary_generated_at: 2026-03-25 22:51:43
npm_readme:
  # n8n-nodes-graphorlm

  [![npm version](https://badge.fury.io/js/n8n-nodes-graphorlm.svg)](https://www.npmjs.com/package/n8n-nodes-graphorlm)
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

  This is an n8n community node that lets you interact with [Graphor](https://graphorlm.com) - an intelligent document processing platform with RAG pipelines, document chat, and data extraction capabilities.

  [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform.

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.

  ### npm

  ```bash
  npm install n8n-nodes-graphorlm
  ```

  ### n8n Desktop/Cloud

  1. Go to **Settings** > **Community Nodes**
  2. Select **Install**
  3. Enter `n8n-nodes-graphorlm` and agree to the risks
  4. Click **Install**

  ## Nodes

  This package includes two nodes:

  1. **Graphor** - Full-featured node with all operations
  2. **Graphor Tool** - Simplified node optimized for AI Agents

  Both nodes can be used as tools with n8n AI Agents (like the AI Agent node with OpenAI, Anthropic, etc.)

  ## Operations

  ### Chat
  - **Ask Question**: Ask questions about your documents using natural language with conversational memory support

  ### Extraction
  - **Extract Data**: Extract structured data from documents using JSON Schema definitions

  ### Flow
  - **List**: List all flows in your project
  - **Run**: Execute a deployed RAG flow with a query
  - **Deploy**: Deploy a flow to make it accessible via API

  ### Source
  - **List**: List all sources in your project
  - **Upload File**: Upload a file (PDF, DOCX, images, audio, video)
  - **Upload From URL**: Ingest content from a web page URL
  - **Upload From GitHub**: Ingest content from a public GitHub repository
  - **Upload From YouTube**: Ingest content from a YouTube video
  - **Process**: Process a source with OCR/parsing (Basic, Hi-Res, Hi-Res FT, MAI, GraphorLM)
  - **Get Elements**: Get structured elements from a processed source
  - **Delete**: Delete a source from your project

  ## Credentials

  To use this node, you need a Graphor API token:

  1. Log in to your [Graphor account](https://app.graphorlm.com)
  2. Go to **Settings** > **API Tokens**
  3. Create a new API token
  4. Copy the token (it starts with `grlm_`)

  ## Supported File Types

  - **Documents**: PDF, DOC, DOCX, ODT, TXT, MD, HTML
  - **Presentations**: PPT, PPTX
  - **Spreadsheets**: CSV, TSV, XLS, XLSX
  - **Images**: PNG, JPG, JPEG, TIFF, BMP, HEIC
  - **Audio**: MP3, WAV, M4A, OGG, FLAC
  - **Video**: MP4, MOV, AVI, MKV, WEBM

  ## Processing Methods

  | Method | Description |
  |--------|-------------|
  | **Basic** | Fast processing with heuristic classification |
  | **Hi-Res** | High resolution processing with advanced layout detection |
  | **Hi-Res FT** | Fine-tuned high resolution processing |
  | **MAI** | Multi-modal AI processing |
  | **GraphorLM** | Graphor proprietary processing method |

  ## Compatibility

  - n8n version 1.0.0 or later
  - Node.js 18.0.0 or later

  ## Resources

  - [Graphor Introduction](https://docs.graphorlm.com/introduction)
  - [Graphor Documentation](https://docs.graphorlm.com)
  - [Graphor API Reference](https://docs.graphorlm.com/api-reference/overview)
  - [API Tokens Guide](https://docs.graphorlm.com/guides/api-tokens)
  - [Data Ingestion Guide](https://docs.graphorlm.com/guides/data-ingestion)
  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)

  ## License

  [MIT](LICENSE)

ai_documentation_summary:
  {"purpose":"A n8n community node that enables AI agents to interact with Graphor AI for document Q&A, data extraction, and document processing.","capabilities":["Ask natural language questions about documents with conversational memory","Extract structured data from documents using JSON Schema definitions","List and run deployed RAG flows","Deploy flows to make them accessible via API","List and manage document sources","Upload files from local disk, URLs, GitHub, and YouTube","Process documents with multiple AI methods (Basic, Hi-Res, Hi-Res FT, MAI, GraphorLM)","Retrieve structured elements from processed sources","Delete sources from the project"],"authentication":"API key required (Graphor API token starting with 'grlm_')","commonUseCases":["AI agent workflows for document Q&A","Automated data extraction from various document formats","Integrating RAG pipelines into n8n workflows","Processing and analyzing uploaded documents programmatically"],"limitations":["Requires a paid Graphor account and API token","Limited to public GitHub repositories (private repos not supported)","Only supports public YouTube videos"],"relatedNodes":["n8n AI Agent node","n8n HTTP Request node","n8n Code node","n8n File node"]}


node_type: n8n-nodes-unifi-access.unifiAccess
package_name: n8n-nodes-unifi-access
display_name: UniFi Access
description: Interact with the UniFi Access API
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:36
author_name: skrapion
author_github_url: https://github.com/Skrapion/
npm_package_name: n8n-nodes-unifi-access
npm_version: 1.0.7
community_fetched_at: 2026-04-16T09:43:36.054Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "user",
      "options": [
        {
          "name": "Access Policy",
          "value": "accessPolicy"
        },
        {
          "name": "Credential",
          "value": "credential"
        },
        {
          "name": "Device",
          "value": "device"
        },
        {
          "name": "Notification",
          "value": "notification"
        },
        {
          "name": "User",
          "value": "user"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Assign Access Policy",
          "value": "assignAccessPolicy",
          "action": "Assign access policies to a user",
          "description": "Assign access policies to a user"
        },
        {
          "name": "Assign NFC Card",
          "value": "assignNfc",
          "action": "Assign an NFC card to a user",
          "description": "Assign an NFC card to a user"
        },
        {
          "name": "Clear PIN",
          "value": "clearPin",
          "action": "Clear a user's PIN",
          "description": "Clear a user's PIN"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create a new user",
          "description": "Create a new user"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a user",
          "description": "Delete a user"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a user",
          "description": "Get the data of a single user"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get users",
          "description": "Get users"
        },
        {
          "name": "Send UniFi Identity Invitations",
          "value": "sendInvitations",
          "action": "Send UniFi Identity invitations"
        },
        {
          "name": "Set PIN",
          "value": "setPin",
          "action": "Set a user's PIN",
          "description": "Set a user's PIN"
        },
        {
          "name": "Unassign NFC Card",
          "value": "unassignNfc",
          "action": "Unssign an NFC card from a user",
          "description": "Unssign an NFC card from a user"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a user",
          "description": "Update a user"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get an access policy",
          "description": "Get an access policy"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get access policies",
          "description": "Get access policies"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "accessPolicy"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "generatePin",
      "options": [
        {
          "name": "Delete NFC Card",
          "value": "deleteNfc",
          "action": "Delete an NFC card",
          "description": "Delete an NFC card"
        },
        {
          "name": "Enroll NFC Card",
          "value": "enrollNfc",
          "action": "Enroll an NFC card",
          "description": "Wake up a UA reader and create a session to enroll an NFC card"
        },
        {
          "name": "Generate PIN",
          "value": "generatePin",
          "action": "Generate a random PIN",
          "description": "Generate a random PIN"
        },
        {
          "name": "Get Many NFC Cards",
          "value": "getAllNfcs",
          "action": "Get NFC cards",
          "description": "Get NFC cards"
        },
        {
          "name": "Get NFC Card",
          "value": "getNfc",
          "action": "Get an NFC card",
          "description": "Get an NFC card"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "credential"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get devices",
          "description": "Get devices"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "device"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAll",
      "options": [
        {
          "name": "Add Webhook",
          "value": "add",
          "action": "Add a webhook endpoint",
          "description": "Add a webhook endpoint"
        },
        {
          "name": "Delete Webhook",
          "value": "delete",
          "action": "Delete a webhook endpoint",
          "description": "Delete a webhook endpoint"
        },
        {
          "name": "Get Many",
          "value": "getAll",
          "action": "Get webhook endpoints",
          "description": "Get webhook endpoints"
        },
        {
          "name": "Update Webhook",
          "value": "update",
          "action": "Update a webhook endpoint",
          "description": "Update a webhook endpoint"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "notification"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Assign Access Policy",
      "value": "assignAccessPolicy",
      "action": "Assign access policies to a user",
      "description": "Assign access policies to a user",
      "resource": "user"
    },
    {
      "name": "Assign NFC Card",
      "value": "assignNfc",
      "action": "Assign an NFC card to a user",
      "description": "Assign an NFC card to a user",
      "resource": "user"
    },
    {
      "name": "Clear PIN",
      "value": "clearPin",
      "action": "Clear a user's PIN",
      "description": "Clear a user's PIN",
      "resource": "user"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a new user",
      "description": "Create a new user",
      "resource": "user"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a user",
      "description": "Delete a user",
      "resource": "user"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a user",
      "description": "Get the data of a single user",
      "resource": "user"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get users",
      "description": "Get users",
      "resource": "user"
    },
    {
      "name": "Send UniFi Identity Invitations",
      "value": "sendInvitations",
      "action": "Send UniFi Identity invitations",
      "resource": "user"
    },
    {
      "name": "Set PIN",
      "value": "setPin",
      "action": "Set a user's PIN",
      "description": "Set a user's PIN",
      "resource": "user"
    },
    {
      "name": "Unassign NFC Card",
      "value": "unassignNfc",
      "action": "Unssign an NFC card from a user",
      "description": "Unssign an NFC card from a user",
      "resource": "user"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a user",
      "description": "Update a user",
      "resource": "user"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get an access policy",
      "description": "Get an access policy",
      "resource": "accessPolicy"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get access policies",
      "description": "Get access policies",
      "resource": "accessPolicy"
    },
    {
      "name": "Delete NFC Card",
      "value": "deleteNfc",
      "action": "Delete an NFC card",
      "description": "Delete an NFC card",
      "resource": "credential"
    },
    {
      "name": "Enroll NFC Card",
      "value": "enrollNfc",
      "action": "Enroll an NFC card",
      "description": "Wake up a UA reader and create a session to enroll an NFC card",
      "resource": "credential"
    },
    {
      "name": "Generate PIN",
      "value": "generatePin",
      "action": "Generate a random PIN",
      "description": "Generate a random PIN",
      "resource": "credential"
    },
    {
      "name": "Get Many NFC Cards",
      "value": "getAllNfcs",
      "action": "Get NFC cards",
      "description": "Get NFC cards",
      "resource": "credential"
    },
    {
      "name": "Get NFC Card",
      "value": "getNfc",
      "action": "Get an NFC card",
      "description": "Get an NFC card",
      "resource": "credential"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get devices",
      "description": "Get devices",
      "resource": "device"
    },
    {
      "name": "Add Webhook",
      "value": "add",
      "action": "Add a webhook endpoint",
      "description": "Add a webhook endpoint",
      "resource": "notification"
    },
    {
      "name": "Delete Webhook",
      "value": "delete",
      "action": "Delete a webhook endpoint",
      "description": "Delete a webhook endpoint",
      "resource": "notification"
    },
    {
      "name": "Get Many",
      "value": "getAll",
      "action": "Get webhook endpoints",
      "description": "Get webhook endpoints",
      "resource": "notification"
    },
    {
      "name": "Update Webhook",
      "value": "update",
      "action": "Update a webhook endpoint",
      "description": "Update a webhook endpoint",
      "resource": "notification"
    }
  ]

npm_readme:
  # n8n-nodes-unifi-access

  This is an n8n community node. It lets you use the UniFi Access API in your n8n workflows.

  UniFi Access is a door control system in the Ubiquiti ecosystem. This node allows you to manage
  users, access policies, NFC cards, etc.

  [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/sustainable-use-license/) workflow automation platform.

  [Installation](#installation)
  [Operations](#operations)
  [Triggers](#triggers)
  [Credentials](#credentials)
  [Compatibility](#compatibility)
  [Resources](#resources)

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.

  ## Operations

  * Access Policy Actions
    * Get an access policy
    * Get access policies
  * Credential Actions
    * Delete an NFC card
    * Enroll an NFC card
    * Generate a random PIN
    * Get NFC cards
    * Get an NFC card
  * Device Actions
    * Get devices
  * Notification Actions
    * Add a webhook
    * Delete a webhook
    * Get webhooks
    * Update a webhook
  * User Actions
    * Assign access policies to a user
    * Assign NFC card to a user
    * Clear a user's PIN
    * Create a new user
    * Delete a user
    * Get a user
    * Get users
    * Send UniFi Identity invitation
    * Set a user's PIN
    * Unassign an NFC card from a user
    * Update a user

  ## Triggers
  * Door Position Change
  * Door Unlock
  * Doorbell Call Incoming
  * Doorbell Event Completed
  * Doorbell Request-to-Enter
  * Emergency Status Change
  * Temporary Unlock End
  * Temporary Unlock Start
  * Unlock Schedule Active
  * Unlock Schedule Inactive
  * Visitor Status Change

  ## Credentials

  Create a new API token in the Settings->General section of the Access dashboard. You'll also need to specify the hostname of your Access server, including the port (usually port 12445). You'll probably also have to adjust your firewall to allow your n8n server to access the API port. 

  ## Compatibility

  Tested again n8n 2.4.8 and UniFi Access 4.1.15.

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [UniFi Access API Documentation](https://assets.identity.ui.com/unifi-access/api_reference.pdf)

ai_documentation_summary:
  {"purpose":"This n8n community node enables automation of UniFi Access API operations for managing door control systems, including users, access policies, NFC cards, and webhooks.","capabilities":["Manage access policies (get, list)","Manage NFC cards (enroll, delete, get, assign/unassign)","Generate random PINs","Manage users (create, delete, update, get, list, assign policies/cards, clear/set PIN)","Send UniFi Identity invitations","Manage webhooks (add, delete, get, update)","Monitor door events (position change, unlock, doorbell events, emergency status, temporary unlocks, schedules, visitor status)"],"authentication":"API token required (generated in UniFi Access dashboard Settings->General) with server hostname and port configuration","commonUseCases":["Automate user onboarding for UniFi Access systems","Trigger actions based on doorbell events or visitor status changes","Automatically assign or revoke access policies based on workflow conditions","Generate temporary access credentials via API","Monitor door status and emergency alerts"],"limitations":["Community node (not official n8n node)","Requires manual firewall configuration to allow access to API port 12445","Requires UniFi Access 4.1.15 or later for compatibility"],"relatedNodes":["n8n-nodes-unifi-unifi","n8n-nodes-unifi-unifi-portal","n8n-nodes-unifi-unifi-remote"]}


node_type: n8n-nodes-videotoblog.videoToBlog
package_name: n8n-nodes-videotoblog
display_name: VideoToBlog
description: Emits events from Video To Blog when a post is exported
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:36
author_name: andrewp629
author_github_url: https://github.com/Video-To-Blog/
npm_package_name: n8n-nodes-videotoblog
npm_version: 1.0.3
community_fetched_at: 2026-04-16T09:43:36.055Z
ai_summary_generated_at: 2026-03-25 22:51:43
npm_readme:
  # n8n-nodes-videotoblog

  Community node(s) to integrate Video To Blog with n8n.

  - Nodes
    - VideoToBlog (Trigger): Emits an item when a post is exported in Video To Blog

  ## Quick Start

  1. Install and link locally:

  ```sh
  npm run build
  npm link
  # In your n8n custom dir (~/.n8n/custom)
  npm link n8n-nodes-videotoblog
  n8n start
  ```

  2. Open n8n and add "VideoToBlog" as the first node.
     - Destination: a friendly label (e.g., "Docs")
     - Credentials: VideoToBlog API (enter your n8n API key from Video To Blog Integrations)
  3. Click "Listen for test event" to register the Test URL, or Activate the workflow to register the Production URL automatically.
  4. Export a blog post from Video To Blog. The trigger will output one item with:
     - html, markdown, emailHtml, title, metaDescription, metaTitle, slug, tags

  Optional: None - the trigger auto-registers/unregisters its webhook.

  ## Node parameters

  - Destination (string): Friendly identifier for your publishing target in n8n
  - Trigger Event (fixed): Post Exported
    

  ## Credentials

  - VideoToBlog API: Generic header auth, adds `x-api-key: <your_key>`.

  ## Docs & references

  - VideoToBlog n8n integration guide: https://docs.videotoblog.ai/en/help/articles/2997507-n8n
  - n8n submission checklist: https://docs.n8n.io/integrations/creating-nodes/deploy/submit-community-nodes/

  ## HTTPS and modes

  - No Base URL field is required in the node UI.
  - Test mode (Execute Node) uses the local Test webhook URL; activation registers the Production webhook URL.

  ## Development

  - Lint/build/test with the n8n node CLI scripts already included:
    - `npm run lint`
    - `npm run dev`
    - `npm run build`

  ## Compatibility

  - n8n: 1.x
  - License: MIT

ai_documentation_summary:
  {"purpose":"A trigger node that emits workflow items when a blog post is exported from Video To Blog.","capabilities":["Triggers on post export events","Outputs post metadata including title, slug, tags, and content formats (HTML, Markdown, Email HTML)","Supports both test and production webhook registration","Auto-registers/unregisters webhooks without manual configuration"],"authentication":"API Key (via custom header x-api-key)","commonUseCases":["Automatically publish Video To Blog posts to external CMS or marketing platforms","Trigger content processing workflows upon new blog post creation","Sync blog metadata across multiple systems"],"limitations":["Requires manual installation and linking of the community package","Only supports n8n version 1.x","No Base URL configuration field in the node UI"],"relatedNodes":["Webhook","HTTP Request","Trigger"]}


node_type: n8n-nodes-carsxe.carsXe
package_name: n8n-nodes-carsxe
display_name: CarsXE
description: Interact with CarsXE API for vehicle data
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:36
author_name: omar_walied
author_github_url: https://github.com/carsxe/
npm_package_name: n8n-nodes-carsxe
npm_version: 1.2.0
community_fetched_at: 2026-04-16T09:43:36.056Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "vin",
      "options": [
        {
          "name": "Diagnostic",
          "value": "diagnostic"
        },
        {
          "name": "License Plate",
          "value": "plate"
        },
        {
          "name": "Vehicle Data",
          "value": "vehicle"
        },
        {
          "name": "VIN",
          "value": "vin"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "specs",
      "options": [
        {
          "name": "Check Liens and Theft Records",
          "value": "lienTheft",
          "action": "Check liens and theft records",
          "description": "Check for active liens and theft records on a vehicle"
        },
        {
          "name": "Get a Vehicle History Report",
          "value": "history",
          "action": "Get a vehicle history report",
          "description": "Retrieve vehicle history"
        },
        {
          "name": "Get a Vehicle Market Value",
          "value": "marketValue",
          "action": "Get a vehicle market value",
          "description": "Estimate vehicle market value based on VIN"
        },
        {
          "name": "Get International VIN Specs",
          "value": "intVinDecoder",
          "action": "Get international VIN specs",
          "description": "Decode VIN with worldwide support"
        },
        {
          "name": "Get Vehicle Safety Recalls",
          "value": "recalls",
          "action": "Get vehicle safety recalls",
          "description": "Get safety recall data for a VIN"
        },
        {
          "name": "Get VIN Specs",
          "value": "specs",
          "action": "Get VIN specs",
          "description": "Decode VIN and get full vehicle specifications"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "vin"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "plateDecoder",
      "options": [
        {
          "name": "Get a License Plate From Image",
          "value": "plateImageRecognition",
          "action": "Get a license plate from image",
          "description": "Read and decode plates from images"
        },
        {
          "name": "Get License Plate Specs",
          "value": "plateDecoder",
          "action": "Get license plate specs",
          "description": "Decode license plate info (plate, country)"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "plate"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "images",
      "options": [
        {
          "name": "Get Vehicle Images",
          "value": "images",
          "action": "Get vehicle images",
          "description": "Fetch images by make, model, year, trim"
        },
        {
          "name": "Get Vehicle Specs by Year/Make/Model",
          "value": "yearMakeModel",
          "action": "Get vehicle specs by year make and model",
          "description": "Query vehicle by year, make, model and trim (optional)"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "vehicle"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "obdCodesDecoder",
      "options": [
        {
          "name": "Get a VIN From Image",
          "value": "vinOcr",
          "action": "Get a VIN from image",
          "description": "Extract VINs from images using OCR"
        },
        {
          "name": "Get OBD Code Specs",
          "value": "obdCodesDecoder",
          "action": "Get OBD code specs",
          "description": "Decode OBD error/diagnostic codes"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "diagnostic"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Check Liens and Theft Records",
      "value": "lienTheft",
      "action": "Check liens and theft records",
      "description": "Check for active liens and theft records on a vehicle",
      "resource": "vin"
    },
    {
      "name": "Get a Vehicle History Report",
      "value": "history",
      "action": "Get a vehicle history report",
      "description": "Retrieve vehicle history",
      "resource": "vin"
    },
    {
      "name": "Get a Vehicle Market Value",
      "value": "marketValue",
      "action": "Get a vehicle market value",
      "description": "Estimate vehicle market value based on VIN",
      "resource": "vin"
    },
    {
      "name": "Get International VIN Specs",
      "value": "intVinDecoder",
      "action": "Get international VIN specs",
      "description": "Decode VIN with worldwide support",
      "resource": "vin"
    },
    {
      "name": "Get Vehicle Safety Recalls",
      "value": "recalls",
      "action": "Get vehicle safety recalls",
      "description": "Get safety recall data for a VIN",
      "resource": "vin"
    },
    {
      "name": "Get VIN Specs",
      "value": "specs",
      "action": "Get VIN specs",
      "description": "Decode VIN and get full vehicle specifications",
      "resource": "vin"
    },
    {
      "name": "Get a License Plate From Image",
      "value": "plateImageRecognition",
      "action": "Get a license plate from image",
      "description": "Read and decode plates from images",
      "resource": "plate"
    },
    {
      "name": "Get License Plate Specs",
      "value": "plateDecoder",
      "action": "Get license plate specs",
      "description": "Decode license plate info (plate, country)",
      "resource": "plate"
    },
    {
      "name": "Get Vehicle Images",
      "value": "images",
      "action": "Get vehicle images",
      "description": "Fetch images by make, model, year, trim",
      "resource": "vehicle"
    },
    {
      "name": "Get Vehicle Specs by Year/Make/Model",
      "value": "yearMakeModel",
      "action": "Get vehicle specs by year make and model",
      "description": "Query vehicle by year, make, model and trim (optional)",
      "resource": "vehicle"
    },
    {
      "name": "Get a VIN From Image",
      "value": "vinOcr",
      "action": "Get a VIN from image",
      "description": "Extract VINs from images using OCR",
      "resource": "diagnostic"
    },
    {
      "name": "Get OBD Code Specs",
      "value": "obdCodesDecoder",
      "action": "Get OBD code specs",
      "description": "Decode OBD error/diagnostic codes",
      "resource": "diagnostic"
    }
  ]

npm_readme:
  # n8n-nodes-carsxe

  [![npm version](https://img.shields.io/npm/v/n8n-nodes-carsxe.svg)](https://www.npmjs.com/package/n8n-nodes-carsxe)
  [![npm downloads](https://img.shields.io/npm/dm/n8n-nodes-carsxe.svg)](https://www.npmjs.com/package/n8n-nodes-carsxe)
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

  **Comprehensive vehicle data integration for [n8n](https://n8n.io)** - VIN decoding, license plate lookup, vehicle history, market values, and more using the [CarsXE API](https://www.carsxe.com).

  ---

  ## 🚗 Features

  - **VIN Decoding** - Decode US & International VINs with full specifications
  - **License Plate Lookup** - Multi-country plate decoder (US, CA, AU, UK, PK)
  - **Vehicle History** - Ownership records and accident history
  - **Market Values** - Real-time vehicle valuations with optional state, mileage, and condition adjustments
  - **Safety Recalls** - Check manufacturer recalls
  - **Vehicle Images** - Fetch professional vehicle photos
  - **OBD Codes** - Decode diagnostic trouble codes
  - **OCR Recognition** - Extract VINs and plates from images

  ---

  ## 📦 Installation

  ### Via Community Nodes (Recommended)

  1. Go to **Settings** → **Community Nodes**
  2. Click **Install a community node**
  3. Enter: `n8n-nodes-carsxe`
  4. Click **Install**

  ### Via npm

  ```bash
  # Global installation
  npm install -g n8n-nodes-carsxe

  # Local installation
  npm install n8n-nodes-carsxe

  # Restart n8n
  n8n start
  ```

  ### Via Docker

  ```bash
  docker run -d \
    --name n8n \
    -p 5678:5678 \
    -e N8N_COMMUNITY_PACKAGES=n8n-nodes-carsxe \
    -v n8n_data:/home/node/.n8n \
    n8nio/n8n
  ```

  ---

  ## 🔑 Credentials

  1. Get your API key from [CarsXE.com](https://www.carsxe.com/signup)
  2. In n8n: **Credentials** → **New** → **CarsXE API**
  3. Paste your API key and save

  ---

  ## 🎯 Operations

  ### VIN Operations

  - **Decode VIN** - Full vehicle specifications
  - **Decode International VIN** - Worldwide VIN support
  - **Get History Report** - Ownership & accident history
  - **Get Market Value** - Current market valuation (optional: state, mileage, condition)
  - **Get Safety Recalls** - Manufacturer recalls

  ### License Plate Operations

  - **Decode License Plate** - Vehicle info from plate
  - **Recognize Plate From Image** - OCR plate extraction

  ### Vehicle Data Operations

  - **Get Images** - Professional vehicle photos
  - **Query by Year/Make/Model** - Search by attributes

  ### Diagnostic Operations

  - **Decode OBD Code** - Interpret diagnostic codes
  - **Extract VIN From Image** - OCR VIN extraction

  ---

  ## 📖 Quick Examples

  ### Example 1: Decode VIN

  ```javascript
  // Configuration
  Resource: VIN
  Operation: Decode VIN
  VIN: WBAFR7C57CC811956

  // Response
  {
    "success": true,
    "vin": "WBAFR7C57CC811956",
    "year": "2012",
    "make": "BMW",
    "model": "7 Series",
    "trim": "750i",
    "engine": "4.4L V8 Turbocharged"
  }
  ```

  ### Example 2: License Plate Lookup

  ```javascript
  // Configuration
  Resource: License Plate
  Operation: Decode License Plate
  Plate: 7XER187
  Country: US
  State: CA (in Additional Options)

  // Response
  {
    "success": true,
    "plate": "7XER187",
    "state": "CA",
    "make": "BMW",
    "model": "750Li"
  }
  ```

  ### Example 3: Get Vehicle Images

  ```javascript
  // Configuration
  Resource: Vehicle Data
  Operation: Get Images
  Make: BMW
  Model: X5
  Year: 2019 (in Additional Options)

  // Response
  {
    "success": true,
    "images": [
      {
        "angle": "front",
        "url": "https://cdn.carsxe.com/..."
      }
    ]
  }
  ```

  ---

  ## 🔄 Common Workflows

  **VIN Decoder API**

  ```
  [Webhook] → [CarsXE: Decode VIN] → [HTTP Response]
  ```

  **License Plate Scanner**

  ```
  [Webhook] → [CarsXE: Recognize Plate] → [Database]
  ```

  **Daily Recall Checker**

  ```
  [Schedule] → [CarsXE: Get Recalls] → [Email/Slack]
  ```

  ---

  ## 🐛 Troubleshooting

  **Error: "Request failed with status code 401"**

  - Check your API key in Credentials
  - Get a new key from [CarsXE Dashboard](https://www.carsxe.com/dashboard)

  **Error: "Invalid VIN format"**

  - VIN must be exactly 17 characters
  - Example: `WBAFR7C57CC811956`

  **Node not appearing after installation**

  - Refresh your browser
  - Clear cache: `rm -rf ~/.n8n/cache`
  - Restart n8n

  ---

  ## 📊 Response Format

  ### Success

  ```json
  {
  	"success": true
  	// ... operation data
  }
  ```

  ### Error

  ```json
  {
  	"success": false,
  	"statusCode": 401,
  	"error": "Invalid API key",
  	"error_description": "Please check your credentials"
  }
  ```

  ---

  ## 📄 License

  MIT License - Copyright (c) 2025 CarsXE

ai_documentation_summary:
  {"purpose":"This n8n node enables interaction with the CarsXE API to retrieve comprehensive vehicle data including VIN decoding, license plate lookups, vehicle history, market values, recalls, images, and OBD codes.","capabilities":["Decode US and International VINs","Perform multi-country license plate lookups (US, CA, AU, UK, PK)","Retrieve vehicle ownership and accident history","Get real-time market valuations","Check manufacturer safety recalls","Fetch professional vehicle images","Decode OBD diagnostic trouble codes","Extract VINs and license plates from images using OCR"],"authentication":"API key required","commonUseCases":["Automated VIN decoding for vehicle identification","License plate recognition and vehicle lookup","Vehicle history and recall monitoring workflows","Market value estimation for vehicles"],"limitations":["VIN must be exactly 17 characters for decoding","License plate lookup limited to specific countries (US, CA, AU, UK, PK)","OCR functionality depends on image quality and clarity"],"relatedNodes":["HTTP Request","Webhook","Schedule Trigger","Email","Slack"]}


node_type: n8n-nodes-get-transcribe.getTranscribe
package_name: n8n-nodes-get-transcribe
display_name: GetTranscribe
description: Interact with GetTranscribe API to transcribe videos from social media platforms
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:36
author_name: danielevz
author_github_url: https://github.com/get-transcribe/
npm_package_name: n8n-nodes-get-transcribe
npm_version: 0.1.4
community_fetched_at: 2026-04-16T09:43:36.057Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "transcription",
      "options": [
        {
          "name": "Transcription",
          "value": "transcription"
        },
        {
          "name": "Folder",
          "value": "folder"
        },
        {
          "name": "User",
          "value": "user"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a transcription",
          "description": "Create a new transcription from a video URL"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a transcription",
          "description": "Get a transcription by ID"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List transcriptions",
          "description": "List all transcriptions"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "transcription"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a folder",
          "description": "Create a new folder"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List folders",
          "description": "List all folders"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a folder",
          "description": "Update a folder"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "folder"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get user info",
          "description": "Get user information"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create a transcription",
      "description": "Create a new transcription from a video URL",
      "resource": "transcription"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a transcription",
      "description": "Get a transcription by ID",
      "resource": "transcription"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List transcriptions",
      "description": "List all transcriptions",
      "resource": "transcription"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a folder",
      "description": "Create a new folder",
      "resource": "folder"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List folders",
      "description": "List all folders",
      "resource": "folder"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a folder",
      "description": "Update a folder",
      "resource": "folder"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get user info",
      "description": "Get user information",
      "resource": "user"
    }
  ]

npm_readme:
  # n8n-nodes-get-transcribe

  This is an n8n node for integrating with the GetTranscribe API, which allows you to transcribe videos from social media platforms like Instagram, TikTok, YouTube, and more.

  ## Features

  ### Transcriptions
  - **Create**: Create a new transcription from a video URL
  - **Get**: Get a specific transcription by ID
  - **List**: List all transcriptions with optional filters

  ### Folders
  - **Create**: Create new folders to organize transcriptions
  - **List**: List all folders
  - **Update**: Update properties of existing folders

  ### User
  - **Get**: Get user information and account statistics

  ## Installation

  ### Installation on n8n Cloud

  1. Go to **Settings** > **Community Nodes**
  2. Search for `n8n-nodes-get-transcribe`
  3. Click **Install**

  ### Installation on self-hosted n8n

  1. Go to your n8n installation root directory
  2. Run: `npm install n8n-nodes-get-transcribe`
  3. Restart n8n

  ## Configuration

  ### Credentials

  To use this node, you need to configure your GetTranscribe credentials:

  1. In n8n, go to **Credentials** and create new credentials of type **GetTranscribe API**
  2. Enter your **API Key** from GetTranscribe
     - You can find your API Key in your GetTranscribe account settings
     - The API Key should have the format: `gt_...`

  ### Credential test URL

  The node will automatically verify your credentials by making a request to `/users/me` on the GetTranscribe API.

  ## Usage

  ### Create a Transcription

  1. Add the **GetTranscribe** node to your workflow
  2. Select **Transcription** as resource
  3. Select **Create** as operation
  4. Enter the URL of the video you want to transcribe
  5. Optionally, select a folder ID to organize the transcription

  Supported URL examples:
  - Instagram: `https://www.instagram.com/p/ABC123/`
  - TikTok: `https://www.tiktok.com/@user/video/123456789`
  - YouTube: `https://www.youtube.com/watch?v=ABC123`

  ### List Transcriptions

  1. Select **Transcription** as resource
  2. Select **List** as operation
  3. Configure optional filters:
     - **Limit**: Maximum number of results
     - **Skip**: Number of results to skip (for pagination)
     - **Folder ID**: Filter by specific folder
     - **Platform**: Filter by platform (Instagram, TikTok, YouTube)

  ### Folder Management

  #### Create Folder
  1. Select **Folder** as resource
  2. Select **Create** as operation
  3. Enter the folder name
  4. Optionally, specify a parent folder ID to create subfolders

  #### List Folders
  1. Select **Folder** as resource
  2. Select **List** as operation
  3. Configure the result limit

  ### User Information

  1. Select **User** as resource
  2. Select **Get** as operation
  3. Enter your user ID (you can use your own ID)

  ## API Response

  ### Transcription

  ```json
  {
    "id": 4032,
    "user_id": 2,
    "transcription": "Transcribed text from the video...",
    "platform": "instagram",
    "url": "https://www.instagram.com/p/DM1P8q1MzaG/",
    "thumbnail_url": "https://...",
    "download_video_url": "https://...",
    "download_audio_url": "https://...",
    "duration": "0:30",
    "duration_seconds": 30.159864,
    "word_count": 91,
    "char_count": 515,
    "folder_id": null,
    "transcription_analysis": null,
    "original_transcription": "Original text...",
    "transcription_segments": [...],
    "transcription_words": [...],
    "created_at": "2025-08-07T17:43:15.822Z",
    "updated_at": "2025-08-07T17:43:15.822Z"
  }
  ```

  ## Workflow Examples

  ### Automatic Transcription from Webhook

  1. **Webhook Trigger** - Receives video URLs
  2. **GetTranscribe Node** - Transcribes the video
  3. **Set Node** - Processes the transcribed text
  4. **HTTP Request** - Sends the transcription to another service

  ### Batch Processing

  1. **Schedule Trigger** - Runs periodically
  2. **GetTranscribe Node** - Lists pending transcriptions
  3. **If Node** - Checks if there are new transcriptions
  4. **Loop** - Processes each transcription

  ## Support

  - **Documentation**: [https://www.gettranscribe.ai/n8n-transcription-instagram-tiktok-automation](https://www.gettranscribe.ai/n8n-transcription-instagram-tiktok-automation)
  - **Support**: [support@gettranscribe.ai](mailto:daniel@gettranscribe.ai)
  - **GitHub**: [https://github.com/get-transcribe/n8n-nodes-get-transcribe](https://github.com/get-transcribe/n8n-nodes-get-transcribe)

  ## Contributing

  Contributions are welcome! Please:

  1. Fork the repository
  2. Create a feature branch
  3. Commit your changes
  4. Push to the branch
  5. Open a Pull Request

  ## Contributors

  Thanks to all the people who have contributed to this project:

  - [danielevz](https://github.com/emeagenciadigital) - Contributor

  ## License

  MIT

  ## Changelog

  ### v0.1.1
  - Updated GitHub repository URLs in package.json

  ### v0.1.0
  - Initial release
  - Support for transcriptions (create, get, list)
  - Support for folders (create, list, update)
  - Support for user information
  - API Key authentication

ai_documentation_summary:
  {"purpose":"This n8n node enables integration with the GetTranscribe API to transcribe videos from social media platforms including Instagram, TikTok, and YouTube.","capabilities":["Create transcriptions from video URLs","Retrieve specific transcriptions by ID","List transcriptions with filtering options","Create and manage folders for organizing transcriptions","Retrieve user information and account statistics"],"authentication":"API Key required (format: gt_...)","commonUseCases":["Automated video transcription for social media content","Batch processing of video transcriptions","Organizing transcriptions into folder structures","Integrating transcribed text into other services via webhooks"],"limitations":["Requires valid GetTranscribe API key with proper permissions","Credential verification requires successful request to /users/me endpoint"],"relatedNodes":["Webhook","Schedule Trigger","If","Loop","Set"]}


node_type: n8n-nodes-instafill.instafill
package_name: n8n-nodes-instafill
display_name: Instafill.ai
description: Interact with the Instafill.ai API
category: Community
development_style: declarative
version: 1,2
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:36
author_name: vladyslav-instafill
author_github_url: https://github.com/Instafill/n8n-nodes.git
npm_package_name: n8n-nodes-instafill
npm_version: 0.2.1
community_fetched_at: 2026-04-16T09:43:36.058Z
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "form",
      "options": [
        {
          "name": "Fill",
          "value": "fill"
        },
        {
          "name": "Form",
          "value": "form"
        },
        {
          "name": "Utility",
          "value": "utility"
        }
      ],
      "displayName": "Resource",
      "displayOptions": {
        "show": {
          "@version": [
            2
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "convertPdf",
      "options": [
        {
          "name": "Check If Flat",
          "value": "checkIfFlat",
          "action": "Check whether PDF form is flat or fillable",
          "description": "Check whether PDF form is flat or fillable"
        },
        {
          "name": "Convert PDF",
          "value": "convertPdf",
          "action": "Convert flat PDF form into a fillable one",
          "description": "Convert flat PDF form into a fillable one"
        },
        {
          "name": "Get Conversion Status",
          "value": "getConversionStatus",
          "action": "Get status of PDF conversion job",
          "description": "Get status of PDF conversion job"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "@version": [
            1
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a fill from provided sources",
          "description": "Create a new fill for a form with data from provided sources"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get fill status by ID",
          "description": "Retrieve the status of a form fill by its ID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "fill"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "upload",
      "options": [
        {
          "name": "Get Many",
          "value": "getMany",
          "action": "Get many forms in workspace",
          "description": "Retrieve a list of forms matching a search query"
        },
        {
          "name": "Upload",
          "value": "upload",
          "action": "Upload PDF form to workspace",
          "description": "Upload a PDF form to your Instafill.ai workspace"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "form"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "convertPdf",
      "options": [
        {
          "name": "Check If Flat",
          "value": "checkIfFlat",
          "action": "Check whether PDF form is flat or fillable",
          "description": "Check whether PDF form is flat or fillable"
        },
        {
          "name": "Convert PDF",
          "value": "convertPdf",
          "action": "Convert flat PDF form into a fillable one",
          "description": "Convert flat PDF form into a fillable one"
        },
        {
          "name": "Get Conversion Status",
          "value": "getConversionStatus",
          "action": "Get status of PDF conversion job",
          "description": "Get status of PDF conversion job"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "utility"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Check If Flat",
      "value": "checkIfFlat",
      "action": "Check whether PDF form is flat or fillable",
      "description": "Check whether PDF form is flat or fillable"
    },
    {
      "name": "Convert PDF",
      "value": "convertPdf",
      "action": "Convert flat PDF form into a fillable one",
      "description": "Convert flat PDF form into a fillable one"
    },
    {
      "name": "Get Conversion Status",
      "value": "getConversionStatus",
      "action": "Get status of PDF conversion job",
      "description": "Get status of PDF conversion job"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a fill from provided sources",
      "description": "Create a new fill for a form with data from provided sources",
      "resource": "fill"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get fill status by ID",
      "description": "Retrieve the status of a form fill by its ID",
      "resource": "fill"
    },
    {
      "name": "Get Many",
      "value": "getMany",
      "action": "Get many forms in workspace",
      "description": "Retrieve a list of forms matching a search query",
      "resource": "form"
    },
    {
      "name": "Upload",
      "value": "upload",
      "action": "Upload PDF form to workspace",
      "description": "Upload a PDF form to your Instafill.ai workspace",
      "resource": "form"
    },
    {
      "name": "Check If Flat",
      "value": "checkIfFlat",
      "action": "Check whether PDF form is flat or fillable",
      "description": "Check whether PDF form is flat or fillable",
      "resource": "utility"
    },
    {
      "name": "Convert PDF",
      "value": "convertPdf",
      "action": "Convert flat PDF form into a fillable one",
      "description": "Convert flat PDF form into a fillable one",
      "resource": "utility"
    },
    {
      "name": "Get Conversion Status",
      "value": "getConversionStatus",
      "action": "Get status of PDF conversion job",
      "description": "Get status of PDF conversion job",
      "resource": "utility"
    }
  ]

npm_readme:
  # n8n-nodes-instafill

  [![npm version](https://img.shields.io/npm/v/n8n-nodes-instafill.svg)](https://www.npmjs.com/package/n8n-nodes-instafill)
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
  [![n8n community](https://img.shields.io/badge/n8n-community--node-orange)](https://www.npmjs.com/package/n8n-nodes-instafill)

  This is a n8n community node. It lets you use [Instafill.ai](https://instafill.ai) in your n8n workflows.

  Instafill.ai is an AI-powered form automation platform. It fills PDF and Word forms in seconds — extracting fields, mapping your data semantically, and completing forms automatically. Used by legal, insurance, healthcare, and finance teams to eliminate manual data entry at scale.

  [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform.

  [Installation](#installation)
  [Operations](#operations)
  [Credentials](#credentials)
  [Compatibility](#compatibility)
  [Resources](#resources)

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.

  ## Operations

  ### Instafill.ai (Action node)

  **Fill**

  - **Create** — Fill a PDF form with data from provided sources (file URLs, text) using AI.
  - **Get** — Retrieve the status of a form fill by its ID.

  **Form**

  - **Upload** — Upload a PDF form to your Instafill.ai workspace.
  - **Get Many** — Search for forms in your workspace by name.

  **Utility**

  - **Convert PDF** — Convert a flat (non-interactive) PDF into a fillable form. Returns a job ID to track the conversion.
  - **Get Conversion Status** — Check the status of a conversion job. Returns the result and a link to the fillable form when complete.
  - **Check If Flat** — Determine whether a PDF is already fillable or needs to be converted first.

  ### Instafill.ai Trigger

  - **Form Converted** — Starts when a flat-to-fillable PDF conversion completes.
  - **Form Filled** — Starts when a form has been filled with data.

  ## Credentials

  To authenticate with Instafill.ai, you need an API key.

  **Prerequisites:** An active [Instafill.ai](https://instafill.ai) account.

  You can find your API key in your [workspace API settings](https://instafill.ai/settings/workspace/api).

  **Setting up credentials in n8n:**

  1. In n8n, open **Credentials** and create a new credential of type **Instafill.ai API**.
  2. Paste your API key into the **API Key** field.
  3. Click **Save** — n8n will verify the key automatically.

  ## Example Workflows

  **Fill a form with data from a document:**

  1. **Instafill.ai (Fill > Create)** — Select a form from the dropdown, provide source file URLs or text data.
  2. **Wait** — Pause the workflow to allow processing.
  3. **Instafill.ai (Fill > Get)** — Pass the fill ID to check status and get the filled PDF URL.

  **Upload and convert a flat PDF:**

  1. **Read Binary File** — Load a PDF from disk or an HTTP request.
  2. **Instafill.ai (Form > Upload)** — Upload the PDF to your workspace.
  3. **Instafill.ai (Utility > Convert PDF)** — Send the PDF for conversion. Returns a job ID.
  4. **Instafill.ai (Utility > Get Conversion Status)** — Check if conversion is complete.

  **Use trigger nodes for automation:**

  1. **Instafill.ai Trigger (Form Filled)** — Starts the workflow when a form is filled with data.
  2. **Instafill.ai Trigger (Form Converted)** — Starts the workflow when a PDF conversion completes.

  ## Compatibility

  Tested against n8n version 1.x. No known incompatibilities.

  ## Resources

  - [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [Instafill.ai](https://instafill.ai)
  - [Instafill.ai API documentation](https://api.instafill.ai/swagger/index.html)


node_type: @forestnpm/n8n-nodes-forest.forest
package_name: @forestnpm/n8n-nodes-forest
display_name: Forest Admin
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:36
author_name: seyz
author_github_url: https://github.com/ForestAdmin/n8n-nodes-forest.git
npm_package_name: @forestnpm/n8n-nodes-forest
npm_version: 1.0.11
community_fetched_at: 2026-04-16T09:43:36.059Z
description:
  Make calls directly to Forest Admin securely with the same security, compliance, and control you rely on today through the Forest Admin MCP Server.

properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "tool",
      "options": [
        {
          "name": "Tool",
          "value": "tool"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "execute",
      "options": [
        {
          "name": "Execute",
          "value": "execute",
          "action": "Execute a tool",
          "description": "Execute a tool on the Forest Admin MCP Server"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "tool"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Execute",
      "value": "execute",
      "action": "Execute a tool",
      "description": "Execute a tool on the Forest Admin MCP Server",
      "resource": "tool"
    }
  ]

npm_readme:
  # n8n-nodes-forest

  This is an n8n community node for integrating with Forest.

  ## Installation

  ### In n8n Desktop or Self-hosted

  1. Go to **Settings > Community Nodes**
  2. Select **Install**
  3. Enter `@forestnpm/n8n-nodes-forest` in the input field
  4. Click **Install**

  ### Manual Installation

  ```bash
  pnpm install @forestnpm/n8n-nodes-forest
  ```

  ## Development

  ### Prerequisites

  - Node.js >= 18.10
  - pnpm >= 9.1

  ### Setup

  ```bash
  # Use Node.js 20
  nvm use 20

  # Install n8n
  npm install -g n8n

  # Install dependencies
  pnpm install

  # Build the project
  pnpm build

  # Run in development mode (watch)
  pnpm dev

  # Run n8n
  n8n
  ```

  ### Testing in n8n

  1. Build the package: `pnpm build`
  2. Link the package globally: `pnpm link --global`
  3. In your n8n installation directory: `pnpm link --global @forestnpm/n8n-nodes-forest`
  4. Restart n8n

  ## Credentials

  This node requires Forest API credentials:
  - **API Key**: Your Forest API key
  - **Base URL**: The Forest API base URL (default: https://api.forestadmin.com)

  ## Usage

  For details on filters and aggregations syntax, see the [Forest Admin filters documentation](https://docs.forestadmin.com/developer-guide-agents-nodejs/data-sources/getting-started/queries/filters).

  ## Resources

  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [Forest Documentation](https://docs.forestadmin.com/)

  ## License

  MIT


node_type: n8n-nodes-smallestai.smallestai
package_name: n8n-nodes-smallestai
display_name: Smallest AI
description: Interact with Smallest AI APIs for voice synthesis and agents
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:36
author_name: smallestai
author_github_url: https://github.com/sosumit001/
npm_package_name: n8n-nodes-smallestai
npm_version: 0.1.7
community_fetched_at: 2026-04-16T09:43:36.059Z
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "tts",
      "options": [
        {
          "name": "Speech (TTS)",
          "value": "tts"
        },
        {
          "name": "Transcription (STT)",
          "value": "stt"
        },
        {
          "name": "Voice Clone",
          "value": "voiceClone"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "synthesize",
      "options": [
        {
          "name": "Get Voices",
          "value": "getVoices",
          "action": "Get voices",
          "description": "Retrieve available voice models"
        },
        {
          "name": "Synthesize Speech",
          "value": "synthesize",
          "action": "Synthesize speech",
          "description": "Convert text to speech"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "tts"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "transcribe",
      "options": [
        {
          "name": "Transcribe Audio",
          "value": "transcribe",
          "action": "Transcribe audio",
          "description": "Transcribe audio to text"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "stt"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "addVoice",
      "options": [
        {
          "name": "Add Voice",
          "value": "addVoice",
          "action": "Add voice",
          "description": "Clone a voice from an audio file"
        },
        {
          "name": "Delete Cloned Voice",
          "value": "deleteClonedVoice",
          "action": "Delete cloned voice",
          "description": "Delete a cloned voice by its ID"
        },
        {
          "name": "Get Cloned Voices",
          "value": "getClonedVoices",
          "action": "Get cloned voices",
          "description": "Retrieve all your cloned voices"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "voiceClone"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Get Voices",
      "value": "getVoices",
      "action": "Get voices",
      "description": "Retrieve available voice models",
      "resource": "tts"
    },
    {
      "name": "Synthesize Speech",
      "value": "synthesize",
      "action": "Synthesize speech",
      "description": "Convert text to speech",
      "resource": "tts"
    },
    {
      "name": "Transcribe Audio",
      "value": "transcribe",
      "action": "Transcribe audio",
      "description": "Transcribe audio to text",
      "resource": "stt"
    },
    {
      "name": "Add Voice",
      "value": "addVoice",
      "action": "Add voice",
      "description": "Clone a voice from an audio file",
      "resource": "voiceClone"
    },
    {
      "name": "Delete Cloned Voice",
      "value": "deleteClonedVoice",
      "action": "Delete cloned voice",
      "description": "Delete a cloned voice by its ID",
      "resource": "voiceClone"
    },
    {
      "name": "Get Cloned Voices",
      "value": "getClonedVoices",
      "action": "Get cloned voices",
      "description": "Retrieve all your cloned voices",
      "resource": "voiceClone"
    }
  ]

npm_readme:
  # n8n-nodes-smallestai

  This is an n8n community node that lets you use [Smallest AI](https://smallest.ai) in your n8n workflows.

  Smallest AI provides state-of-the-art voice AI APIs — including text-to-speech, speech-to-text, and voice cloning — enabling you to build powerful voice-driven automations.

  [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform.

  [Installation](#installation)
  [Operations](#operations)
  [Credentials](#credentials)
  [Compatibility](#compatibility)
  [Resources](#resources)

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.

  ## Operations

  ### Speech (TTS)

  - **Synthesize Speech** — Convert text to speech using Lightning V3.1 (default voices) or Lightning Large (cloned voices). Supports PCM, MP3, WAV, and Mulaw output formats with configurable sample rate, speed, and language.
  - **Get Voices** — Retrieve available voice models for Lightning V2 or Lightning V3.1.

  ### Transcription (STT)

  - **Transcribe Audio** — Transcribe audio to text with support for 20+ languages. Optional age, gender, and emotion detection.

  ### Voice Clone

  - **Add Voice** — Clone a voice from an uploaded audio file.
  - **Get Cloned Voices** — Retrieve all your cloned voices.
  - **Delete Cloned Voice** — Delete a cloned voice by its ID.

  ## Credentials

  To use this node, you need a Smallest AI API key:

  1. Sign up at [console.smallest.ai](https://console.smallest.ai)
  2. Navigate to [API Keys](https://console.smallest.ai/apikeys)
  3. Create a new API key
  4. In n8n, create a new **Smallest.ai API** credential and paste your API key

  ## Compatibility

  - Tested with n8n v1.x and v2.x
  - Requires Node.js v22 or higher

  ## Resources

  - [Smallest AI Documentation](https://waves-docs.smallest.ai/)
  - [Smallest AI API Reference](https://waves-docs.smallest.ai/v4.0.0/content/api-references/authentication)
  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/)

  ## License

  [MIT](LICENSE.md)


node_type: n8n-nodes-uploadtourl.uploadToUrl
package_name: n8n-nodes-uploadtourl
display_name: Upload to URL
description: Upload files for instant hosting and receive a shareable public URL. Delete anytime
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:36
author_name: jiteshdugar
author_github_url: https://github.com/Upload-to-URL/
npm_package_name: n8n-nodes-uploadtourl
npm_version: 1.1.1
community_fetched_at: 2026-04-16T09:43:36.060Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "fileActions",
      "options": [
        {
          "name": "File",
          "value": "fileActions"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "upload",
      "options": [
        {
          "name": "Upload File",
          "value": "upload",
          "action": "Upload a File",
          "description": "Upload a file (binary data or base64) and get a public URL"
        },
        {
          "name": "Retrieve File",
          "value": "retrieve",
          "action": "Retrieve a File",
          "description": "Retrieve file information by file ID"
        },
        {
          "name": "Delete File",
          "value": "delete",
          "action": "Delete a File",
          "description": "Delete a file by file ID"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "fileActions"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Upload File",
      "value": "upload",
      "action": "Upload a File",
      "description": "Upload a file (binary data or base64) and get a public URL",
      "resource": "fileActions"
    },
    {
      "name": "Retrieve File",
      "value": "retrieve",
      "action": "Retrieve a File",
      "description": "Retrieve file information by file ID",
      "resource": "fileActions"
    },
    {
      "name": "Delete File",
      "value": "delete",
      "action": "Delete a File",
      "description": "Delete a file by file ID",
      "resource": "fileActions"
    }
  ]

npm_readme:
  # n8n-nodes-uploadtourl

  [![Hero Banner](images/hero-banner.png)](https://uploadtourl.com)

  This is a verified [n8n](https://n8n.io/) node that lets you upload any file and get a public URL instantly using [Upload to URL](https://uploadtourl.com). Supports both binary data and base64 string inputs.

  This is the link to our n8n verified integration - [https://n8n.io/integrations/upload-to-url/](https://n8n.io/integrations/upload-to-url/)

  [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform.

  [Installation](#installation) |
  [Operations](#operations) |
  [Credentials](#credentials) |
  [Usage](#usage) |
  [Resources](#resources)

  ## Setup

  The **Upload to URL** node is a verified n8n integration, which means it can be set up directly on both n8n cloud and self-hosted instances without needing to install it through the Community Nodes section.

  ### In n8n

  1. Open your n8n instance.
  2. Create or open a workflow.
  3. Click the **+** button to add a node.
  4. Search for **Upload to URL**.
  5. Select it to add it to your workflow.

  ## Operations

  ### File Actions

  The **Upload to URL** node provides the following operations under the **File Actions** resource:

  - **Upload File** — Upload a file (binary data or base64 string) from your workflow and receive a publicly accessible URL in response.
  - **Retrieve File** — Retrieve details of a previously uploaded file using its file ID.
  - **Delete File** — Delete a previously uploaded file from the server using its file ID.

  #### Upload File Parameters

  | Parameter | Type | Default | Description |
  |-----------|------|---------|-------------|
  | **Input Type** | selection | `Binary Data` | Choose between "Binary Data" (from previous nodes) or "Base64 String" (direct base64 input) |
  | **Binary Property** | string | `data` | The name of the binary property containing the file to upload. Only shown when Input Type is "Binary Data". |
  | **Base64 Data** | string | - | Base64 encoded file data. Only shown when Input Type is "Base64 String". |
  | **Filename** | string | `file.bin` | Name of the file (e.g., document.pdf, image.jpg). Required for base64 input. |
  | **MIME Type** | selection | `auto` | Choose from common MIME types or select "Custom" to specify your own. Also supports "Auto-detect from filename" to automatically determine the MIME type from the file extension. |
  | **Custom MIME Type** | string | - | Custom MIME type (e.g., application/vnd.ms-excel). Only shown when MIME Type is set to "Custom". |
  | **Expiry Days** | number | - | Number of days after which the uploaded file will be automatically deleted from the server. Leave empty for no expiration. |

  #### Retrieve File / Delete File Parameters

  | Parameter | Type | Description |
  |-----------|------|-------------|
  | **File ID** | string | The ID of the file to retrieve or delete. This is returned in the response when a file is uploaded. |

  #### Output

  The node returns the JSON response from the Upload to URL API, which includes the public URL for the uploaded file.

  ### Supported Features

  ![Node Demo](images/node-demo.png)

  - **Multiple Input Types** — Supports both binary data from previous nodes and direct base64 string input.
  - **Smart Defaults** — Filename defaults to `file.bin` and MIME type defaults to auto-detection for seamless setup.
  - **File Expiry** — Set an expiry period (in days) for uploaded files so they are automatically deleted from the server after the specified time.
  - **Retrieve & Delete Files** — Retrieve details of or delete previously uploaded files using their file ID.
  - **Batch Processing** — Handles multiple input items; each item's file is uploaded individually.
  - **Continue on Fail** — When enabled, the workflow continues even if an upload fails, returning the error message in the output instead of stopping execution.
  - **Usable as Sub-Node / Tool** — Can be used as a tool in AI agent workflows and sub-workflows.

  #### Supported File Types

  The node supports all file types including:
  - **Images**: JPEG, PNG, GIF, WebP, SVG, ICO
  - **Documents**: PDF, DOC, DOCX, TXT, CSV, XLS, XLSX
  - **Videos**: MP4, AVI, MOV, WMV, FLV, WebM
  - **Audio**: MP3, WAV, FLAC, AAC, OGG
  - **Archives**: ZIP, RAR, TAR, GZ
  - **Any custom file type**

  ## Credentials

  To use this node, you need an **Upload to URL API key**.

  ### Obtaining an API Key

  1. Visit [uploadtourl.com](https://uploadtourl.com)
  2. Create an account or sign in
  3. Navigate to your API settings to generate an API key

  ### Setting Up Credentials in n8n

  1. In n8n, go to **Credentials**
  2. Select **Add Credential**
  3. Search for **Upload to URL API**
  4. Enter your **API Key** in the provided field
  5. Select **Save**

  The credential is automatically verified against the Upload to URL API when saved.

  ## Usage

  ### Node Overview

  The **Upload to URL** node provides a clean interface for uploading files with support for both binary data and base64 string inputs.

  ![Node Details](images/node-details.png)

  ### Binary Data Upload (Existing)

  1. Add a node that produces binary data (e.g., **Read Binary File**, **HTTP Request**, or a **Webhook** trigger with file upload)
  2. Connect it to the **Upload to URL** node
  3. Set **Input Type** to "Binary Data"
  4. Configure the **Binary Property** name if your binary data uses a property name other than `data`
  5. Execute the workflow to upload the file and receive a public URL

  ### Base64 String Upload (New)

  1. Add a node that produces base64 data or use a **Set** node to define base64 content
  2. Connect it to the **Upload to URL** node
  3. Set **Input Type** to "Base64 String"
  4. Configure the following parameters:
     - **Base64 Data**: The base64 encoded string (with or without data URL prefix)
     - **Filename**: The desired filename (defaults to `file.bin` if not specified)
     - **MIME Type**: Choose from the dropdown (defaults to "Auto-detect from filename")
  5. Execute the workflow to upload the file and receive a public URL

  **Note**: With the default settings, you only need to provide the base64 data. The node will automatically use `file.bin` as the filename and detect the MIME type from the file extension if you change the filename to end with a proper extension (e.g., `image.jpg`).

  ### Base64 Input Examples

  #### Example 1: Direct Base64 Input
  ```
  [Set Node with base64 data] → [Upload to URL] → [HTTP Request with URL]
  ```

  **Set Node configuration:**
  - JSON mode: `{
    "base64Data": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJ...",
    "fileName": "image.png",
    "mimeType": "image/png"
  }`

  **Upload to URL configuration:**
  - Input Type: "Base64 String"
  - Base64 Data: `{{ $json.base64Data }}`
  - Filename: `{{ $json.fileName }}`
  - MIME Type: `{{ $json.mimeType }}`

  #### Example 2: Data URL Input
  The node automatically handles data URLs like:
  ```
  data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQ...
  ```

  Simply paste the entire data URL in the **Base64 Data** field, and the node will extract the base64 portion automatically.

  #### MIME Type Options

  The **MIME Type** dropdown provides several options:

  - **Auto-detect from filename**: Automatically determines the MIME type based on the file extension (e.g., `.jpg` → `image/jpeg`, `.pdf` → `application/pdf`)
  - **Predefined options**: Common MIME types for images, documents, videos, audio, and archives
  - **Custom**: Allows you to specify any MIME type (e.g., `application/vnd.ms-excel` for Excel files)

  **Supported Auto-detect Extensions**:
  - Images: `.jpg`, `.jpeg`, `.png`, `.gif`, `.webp`, `.svg`
  - Documents: `.pdf`, `.txt`, `.csv`, `.json`, `.xml`
  - Archives: `.zip`
  - Media: `.mp4`, `.mp3`
  - Unknown extensions default to `application/octet-stream`

  ### Example Workflow

  ```
  [Read Binary File] → [Upload to URL] → [Send Email with URL]
  ```

  1. **Read Binary File** reads a local file and outputs it as binary data
  2. **Upload to URL** uploads the file and returns a public URL
  3. **Send Email** uses the returned URL to share the file link

  ### Using with HTTP Request

  ```
  [HTTP Request (download file)] → [Upload to URL] → [Slack Message with URL]
  ```

  1. **HTTP Request** downloads a file from any source
  2. **Upload to URL** re-hosts the file and provides a permanent public URL
  3. **Slack** sends a message containing the file link

  ### Using in AI Agent Workflows

  The node is marked as **usable as a tool**, so it can be used within n8n's AI Agent node. This allows an AI agent to upload files and retrieve public URLs as part of its reasoning process.

  ## Development

  ### Prerequisites

  - [Node.js](https://nodejs.org/) v22 or higher
  - npm

  ### Setup

  ```bash
  git clone https://github.com/Upload-to-URL/n8n-nodes-uploadtourl.git
  cd n8n-nodes-uploadtourl
  npm install
  ```

  ### Available Scripts

  | Script | Description |
  |--------|-------------|
  | `npm run dev` | Start n8n with the node loaded and hot reload enabled |
  | `npm run build` | Compile TypeScript to JavaScript for production |
  | `npm run build:watch` | Build with watch mode (auto-rebuild on changes) |
  | `npm run lint` | Check code for errors and style issues |
  | `npm run lint:fix` | Auto-fix linting issues |
  | `npm run release` | Create a new release |

  ### Local Development

  ```bash
  npm run dev
  ```

  This starts n8n with your node available at [http://localhost:5678](http://localhost:5678) and automatically rebuilds when you make changes.

  ## Resources

  - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)
  - [Upload to URL Website](https://uploadtourl.com)
  - [n8n Community Forum](https://community.n8n.io/)

  ## License

  [MIT](LICENSE.md)

ai_documentation_summary:
  {"purpose":"Uploads files (binary data or base64 strings) to a public hosting service and returns a shareable URL, with optional file retrieval and deletion capabilities.","capabilities":["Upload files via binary data input","Upload files via base64 string input","Retrieve file details using file ID","Delete files using file ID","Set custom file expiry periods","Auto-detect MIME types from filenames","Support batch processing of multiple items","Continue workflow execution on upload failure"],"authentication":"API Key required (Upload to URL API Key)","commonUseCases":["Hosting temporary files in n8n workflows","Sharing documents or images with public links","Automated file delivery in agent workflows","Temporary file storage with auto-deletion"],"limitations":["Community node (fair-code licensed, may have fewer features than official nodes)","Requires manual API key setup in n8n credentials","File storage is external and dependent on Upload to URL service uptime","File retrieval and deletion require storing the file ID returned from upload"],"relatedNodes":["Read Binary File","Set","HTTP Request","Webhook"]}


node_type: n8n-nodes-beyondpresence.beyondPresence
package_name: n8n-nodes-beyondpresence
display_name: Beyond Presence
description: Deploy video agents with Beyond Presence
category: Marketing & Content
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:36
author_name: nicolabeyondpresence
author_github_url: https://github.com/bey-dev/
npm_package_name: n8n-nodes-beyondpresence
npm_version: 0.4.0
community_fetched_at: 2026-04-16T09:43:36.061Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "agent",
      "options": [
        {
          "name": "Agent",
          "value": "agent"
        },
        {
          "name": "Avatar",
          "value": "avatar"
        },
        {
          "name": "Custom API Call",
          "value": "__CUSTOM_API_CALL__"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a new agent",
          "routing": {
            "output": {
              "postReceive": [
                {
                  "type": "setKeyValue",
                  "properties": {
                    "id": "={{ $responseItem.id }}",
                    "call_link": "=https://bey.chat/{{ $responseItem.id }}"
                  }
                }
              ]
            },
            "request": {
              "url": "/agent",
              "body": {
                "name": "={{ $parameter.name }}",
                "greeting": "={{ $parameter.greeting }}",
                "language": "={{ $parameter.language }}",
                "avatar_id": "={{ $parameter.avatarId }}",
                "capabilities": "={{ $parameter.capabilities }}",
                "system_prompt": "={{ $parameter.systemPrompt }}",
                "max_session_length_minutes": "={{ $parameter.maxSessionLengthMinutes }}"
              },
              "method": "POST"
            }
          },
          "description": "Deploy a new agent with configuration"
        },
        {
          "name": "Custom API Call",
          "value": "__CUSTOM_API_CALL__"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "agent"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get the available avatars",
          "routing": {
            "request": {
              "url": "/avatar",
              "method": "GET"
            }
          },
          "description": "Get the available Avatars"
        },
        {
          "name": "Custom API Call",
          "value": "__CUSTOM_API_CALL__"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "avatar"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Create",
      "value": "create",
      "action": "Create a new agent",
      "routing": {
        "output": {
          "postReceive": [
            {
              "type": "setKeyValue",
              "properties": {
                "id": "={{ $responseItem.id }}",
                "call_link": "=https://bey.chat/{{ $responseItem.id }}"
              }
            }
          ]
        },
        "request": {
          "url": "/agent",
          "body": {
            "name": "={{ $parameter.name }}",
            "greeting": "={{ $parameter.greeting }}",
            "language": "={{ $parameter.language }}",
            "avatar_id": "={{ $parameter.avatarId }}",
            "capabilities": "={{ $parameter.capabilities }}",
            "system_prompt": "={{ $parameter.systemPrompt }}",
            "max_session_length_minutes": "={{ $parameter.maxSessionLengthMinutes }}"
          },
          "method": "POST"
        }
      },
      "description": "Deploy a new agent with configuration",
      "resource": "agent"
    },
    {
      "name": "Custom API Call",
      "value": "__CUSTOM_API_CALL__",
      "resource": "agent"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get the available avatars",
      "routing": {
        "request": {
          "url": "/avatar",
          "method": "GET"
        }
      },
      "description": "Get the available Avatars",
      "resource": "avatar"
    },
    {
      "name": "Custom API Call",
      "value": "__CUSTOM_API_CALL__",
      "resource": "avatar"
    }
  ]

npm_readme:
  # n8n-nodes-beyondpresence

  > **Currently in BETA and under active development.**

  This is an n8n community node for integrating [Beyond Presence](https://docs.bey.dev) — deploy and manage AI-driven video agents directly from your workflows.

  ## Features

  - **Process webhook**: Handle and filter webhook events from Beyond Presence.
  - **Create agent**: Create a video agent and get a ready-to-use call link.
  - **Get available avatars**: Fetch available avatars for use.

  More resources and operations coming soon.

  ## Installation

  Follow the [n8n community node installation guide](https://docs.n8n.io/integrations/community-nodes/installation).

  ## Credentials

  [Create an API key](https://docs.bey.dev/api-key) and configure it in the node credentials.

  ## Compatibility

  Requires n8n v1.39.1 or higher.

  ## Resources

  - [Beyond Presence webhook n8n integration](https://docs.bey.dev/webhooks/n8n)
  - [Beyond Presence API docs](https://docs.bey.dev)
  - [n8n community nodes docs](https://docs.n8n.io/integrations)

ai_documentation_summary:
  {"purpose":"This node enables users to deploy and manage AI-driven video agents from Beyond Presence directly within n8n workflows.","capabilities":["Process and filter webhook events from Beyond Presence","Create video agents and generate call links","Fetch available avatars for agent customization"],"authentication":"API key required","commonUseCases":["Automating video agent deployment in marketing campaigns","Integrating AI video agents into customer support workflows","Managing agent configurations and avatar selections programmatically"],"limitations":["Currently in BETA and under active development","Limited feature set with more operations planned for future releases"],"relatedNodes":["n8n-nodes-webhook","n8n-nodes-http-request"]}


node_type: n8n-nodes-wpforms.wpformsTrigger
package_name: n8n-nodes-wpforms
display_name: WPForms Trigger
description: Starts a workflow when a WPForms form is submitted
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:36
author_name: wpforms
author_github_url: https://github.com/awesomemotive/wpforms-n8n-nodes.git
npm_package_name: n8n-nodes-wpforms
npm_version: 0.1.4
community_fetched_at: 2026-04-16T09:43:36.062Z
ai_summary_generated_at: 2026-03-25 22:51:43
npm_readme:
  ## n8n WPForms Trigger node

  NPM package name: `n8n-nodes-wpforms`

  This repository contains custom n8n nodes for WPForms integration, providing triggers and actions to automate workflows with WPForms data.

  ## Prerequisites

  You need the following installed on your development machine:

  * [git](https://git-scm.com/downloads)
  * Node.js and npm. Minimum version Node 20. You can find instructions on how to install both using nvm (Node Version Manager) for Linux, Mac, and WSL [here](https://github.com/nvm-sh/nvm). For Windows users, refer to Microsoft's guide to [Install NodeJS on Windows](https://docs.microsoft.com/en-us/windows/dev-environment/javascript/nodejs-on-windows).
  * Install n8n with:
    ```
    npm install n8n -g
    ```
  * Recommended: follow n8n's guide to [set up your development environment](https://docs.n8n.io/integrations/creating-nodes/build/node-development-environment/).

  ## Build and Install the Node Package

  ### 1. Install Dependencies
  ```bash
  npm install
  ```

  ### 2. Build the Project
  ```bash
  npm run build
  ```
  This command will:
  - Clean the `dist` directory
  - Compile TypeScript files
  - Build icons using gulp
  - Generate the distributable files

  ### 3. Link the Package Locally
  ```bash
  npm link
  ```

  ### 4. Set Up Custom Nodes Directory
  ```bash
  # Create custom directory in n8n home
  mkdir -p ~/.n8n/custom
  cd ~/.n8n/custom

  # Initialize npm in the custom directory
  npm init -y
  ```

  ### 5. Link Node to n8n Instance
  ```bash
  # Link your custom node to n8n (run from ~/.n8n/custom)
  npm link n8n-nodes-wpforms
  ```

  ### 6. Configure n8n Environment
  Set the environment variable to tell n8n where to find custom nodes:

  **For Linux/Mac:**
  ```bash
  export N8N_CUSTOM_EXTENSIONS="$HOME/.n8n/custom"
  ```

  **For Windows (PowerShell):**
  ```powershell
  $env:N8N_CUSTOM_EXTENSIONS="$HOME\.n8n\custom"
  ```

  ### 7. Start n8n
  ```bash
  n8n start
  ```

  ### 8. Verify Installation
  1. Open n8n in your browser (usually `http://localhost:5678`)
  2. Look for your custom nodes in the node palette
  3. You should see "WPForms" nodes available

  ## Setup and Usage Instructions for WPForms Trigger Node

  ### Prerequisites

  - A WordPress site with the WPForms plugin + WPForms n8n addon installed and activated.
  - An n8n instance.

  ### Installation

  1.  Go to your n8n instance.
  2.  Go to **Settings > Community Nodes**.
  3.  Click **Install a community node**.
  4.  Enter `n8n-nodes-wpforms` in the **npm package name** field.
  5.  Click **Install**.

  ### Configuration

  1.  In your n8n workflow, add the **WPForms Trigger** node.
  2.  Configure the node settings:
      *   **Secret Key**: Enter a secret key. This key must match the secret key configured in your WPForms n8n addon settings. It is used to verify the integrity of the data received.
      *   **Timestamp Skew**: Set the allowed time difference in seconds between your server and the WPForms server. The default is 300 seconds.
      *   **Output Schema**: Choose the output format. 'Default' provides a structured JSON object, while 'Raw' provides the raw request body and headers.
  3.  The node will display a webhook URL. Copy this URL.
  4.  In the Form Builder, go to the Marketing > n8n tab.
  5.  Enable n8n integration.
  6.  Paste the webhook URL from n8n.
  7.  Copy Secret Key and paste it to the WPForms Trigger node.
  8.  Save your form settings.

  ### Usage

  Now, whenever the selected form is submitted, it will trigger your n8n workflow. The form data will be available in the node's output.

  ## Development Workflow 

  In Linux/MacOS or Windows using PS 7 shell:

  ```bash
  cd /path/to/wpforms-n8n-nodes/

  # Build and link after changes
  npm run build && npm link

  # Watch for changes during development
  npm run dev
  ```

  In your n8n instance, re-link the node and restart n8n:
  ```bash
  cd ~/.n8n/custom

  # Re-link node and restart n8n:
  npm link n8n-nodes-wpforms && n8n start
  ```

  ## Testing Your Node 

  ```bash
  # Check for linting errors
  npm run lint

  # Auto-fix linting errors when possible
  npm run lintfix
  ```

  ## Publishing  

  First you need to bump the version. This needs to be reflected both in the package.json & the package-lock.json.  

  You can also do that using `npm version` - this will also create the new tag:  

  ```bash
  npm version patch  # for bug fixes (0.1.2 → 0.1.3)
  npm version minor  # for new features (0.1.2 → 0.2.0)
  npm version major  # for breaking changes (0.1.2 → 1.0.0)
  ```

  Next, you need to push the change in the main branch and also create/push a tag starting with `v`, e.g. v0.1.3

  We are publishing automatically to npm each time a tag is pushed in the repo.  
  Alongside that, a GitHub Release is also created.  

  ## More information

  Refer to our [documentation on creating nodes](https://docs.n8n.io/integrations/creating-nodes/) for detailed information on building your own nodes.

  ## License

  [MIT](https://github.com/n8n-io/n8n-nodes-starter/blob/master/LICENSE.md)

ai_documentation_summary:
  {"purpose":"Triggers an n8n workflow automatically when a form is submitted via the WPForms plugin on a WordPress site.","capabilities":["Starts a workflow on form submission","Validates data integrity using a secret key","Configurable timestamp skew tolerance","Flexible output schema (structured JSON or raw request body/headers)"],"authentication":"Secret Key (must match WPForms n8n addon configuration)","commonUseCases":["Lead capture automation","Contact form follow-up workflows","Data validation and processing triggers"],"limitations":["Requires WPForms plugin and WPForms n8n addon to be installed on the WordPress site","Requires manual installation of the custom n8n node package"],"relatedNodes":["n8n-nodes-wpforms.wpformsAction","n8n-nodes-wpforms.wpformsWebhook"]}


node_type: n8n-nodes-triggercmd.triggercmd
package_name: n8n-nodes-triggercmd
display_name: TriggerCMD
description: Run a command on a computer.
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:36
author_name: rvandermey
author_github_url: https://github.com/rvmey/
npm_package_name: n8n-nodes-triggercmd
npm_version: 1.0.2
community_fetched_at: 2026-04-16T09:43:36.068Z
ai_summary_generated_at: 2026-03-25 22:51:43
npm_readme:
  # n8n-nodes-triggercmd

  This is an n8n community node. It lets you use TRIGGERcmd in your n8n workflows.

  TRIGGERcmd is a cloud service that allows you to run commands on your computers via the Internet.  You install the TRIGGERcmd agent on your Windows, Mac, or Linux computer, configure commands to run, then run them.

  [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform.

  [Installation](#installation)  
  [Operations](#operations)  
  [Credentials](#credentials)
  [Compatibility](#compatibility)  
  [Usage](#usage)  
  [Resources](#resources)

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.

  ## Operations

  Run a command on a computer.

  ## Credentials

  Create an account at triggercmd.com and copy a token from the Instructions page.

  ## Compatibility

  Tested on n8n version 1.106.3

  ## Usage

  If the command you'll run on your computer via TRIGGERcmd has parameters enabled, you can use n8n node input data as command parameters.

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [TRIGGERcmd](https://triggercmd.com)

ai_documentation_summary:
  {"purpose":"Executes commands on remote computers (Windows, Mac, or Linux) via the TRIGGERcmd cloud service within n8n workflows.","capabilities":["Run system commands on remote machines","Support dynamic command parameters from n8n node inputs","Cross-platform support (Windows, Mac, Linux)"],"authentication":"API token required (obtained from triggercmd.com account)","commonUseCases":["Automated system maintenance tasks","Remote file operations","Process management on remote servers"],"limitations":["Requires TRIGGERcmd agent installation on target machines","Requires separate TRIGGERcmd account and token setup","Limited to commands supported by the TRIGGERcmd service"],"relatedNodes":["n8n-nodes-base.httpRequest","n8n-nodes-base.code"]}


node_type: @paloaltonetworks/n8n-nodes-prisma-airs.prismaAirs
package_name: @paloaltonetworks/n8n-nodes-prisma-airs
display_name: Prisma AIRS
description: Scan AI prompts and responses for security threats using Prisma AIRS
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  {
  "type": "main"
  }
  ]

updated_at: 2026-04-16 09:43:36
author_name: btorresgil
author_github_url: https://github.com/jroberts2600/n8n-nodes-prisma-airs.git
npm_package_name: @paloaltonetworks/n8n-nodes-prisma-airs
npm_version: 0.2.2
community_fetched_at: 2026-04-16T09:43:36.069Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "operation",
      "type": "options",
      "default": "promptScan",
      "options": [
        {
          "name": "Batch Scan",
          "value": "batchScan",
          "action": "Perform batch scanning of multiple items",
          "description": "Scan multiple items in a single operation (up to 5)"
        },
        {
          "name": "Dual Scan",
          "value": "dualScan",
          "action": "Perform dual scanning of prompt and response",
          "description": "Scan both prompt and response in sequence"
        },
        {
          "name": "Mask Data",
          "value": "maskData",
          "action": "Scan and mask sensitive data",
          "description": "Scan and mask sensitive data in content"
        },
        {
          "name": "Prompt Scan",
          "value": "promptScan",
          "action": "Scan a prompt for security threats",
          "description": "Scan user input/prompts for security threats"
        },
        {
          "name": "Response Scan",
          "value": "responseScan",
          "action": "Scan a response for policy violations",
          "description": "Scan AI-generated responses for policy violations"
        }
      ],
      "displayName": "Operation",
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Batch Scan",
      "value": "batchScan",
      "action": "Perform batch scanning of multiple items",
      "description": "Scan multiple items in a single operation (up to 5)"
    },
    {
      "name": "Dual Scan",
      "value": "dualScan",
      "action": "Perform dual scanning of prompt and response",
      "description": "Scan both prompt and response in sequence"
    },
    {
      "name": "Mask Data",
      "value": "maskData",
      "action": "Scan and mask sensitive data",
      "description": "Scan and mask sensitive data in content"
    },
    {
      "name": "Prompt Scan",
      "value": "promptScan",
      "action": "Scan a prompt for security threats",
      "description": "Scan user input/prompts for security threats"
    },
    {
      "name": "Response Scan",
      "value": "responseScan",
      "action": "Scan a response for policy violations",
      "description": "Scan AI-generated responses for policy violations"
    }
  ]

npm_readme:
  # Prisma AIRS n8n Community Node

  A production-ready n8n community node for integrating with Palo Alto Networks Prisma AIRS (AI Runtime Security) API. This node enables you to scan AI prompts and responses for security threats directly within your n8n workflows.

  ## Features

  - **Multiple Scan Operations**: Prompt scanning, response scanning, dual scanning, batch scanning, and data masking
  - **Batch Processing**: Scan up to 5 items in a single operation for efficiency
  - **Data Masking**: Automatically detect and mask sensitive data in content
  - **Contextual Grounding**: Validate AI responses against provided context (up to 100K characters)
  - **Dynamic Profile Selection**: Override security profiles per scan using profile name or UUID
  - **Sync & Async Support**: Both synchronous (2MB limit) and asynchronous (5MB limit) scanning
  - **Regional Support**: US, EU (Germany), India, and Custom region endpoints
  - **Flexible Profile Management**: Use API key with linked profile or specify profile name/UUID
  - **Attribution Metadata**: Automatic n8n workflow context (workflowId, workflowName, executionId, executionMode) 
  - **Production-Ready**: Comprehensive error handling, retry logic, and timeout management
  - **Security-First**: Secure credential storage and API key management
  - **Real-time Monitoring**: Async scan polling with exponential backoff

  ## Installation

  ### Prerequisites

  - n8n instance (version 1.0+)
  - Prisma AIRS API access with valid API key
  - Access to Strata Cloud Manager to configure AI security profiles

  ### For End Users

  #### Option 1: Install via n8n Community Nodes (Recommended)
  1. Open your n8n instance
  2. Go to **Settings** → **Community Nodes**
  3. Search for `prisma airs`
  4. Click **Install**
  5. Restart n8n

  #### Option 2: Install via npm
  ```bash
  npm install @paloaltonetworks/n8n-nodes-prisma-airs
  ```

  ### For Developers & Testing

  #### Local Development Setup
  1. **Clone and Build**
     ```bash
     git clone https://github.com/PaloAltoNetworks/n8n-nodes-prisma-airs.git
     cd n8n-nodes-prisma-airs
     npm install
     npm run build
     ```

  2. **Link to n8n**
     ```bash
     # For local n8n installation
     ln -s $(pwd) ~/.n8n/custom/n8n-nodes-prisma-airs
     
     # For Docker n8n - add volume mount:
     # -v /path/to/n8n-nodes-prisma-airs:/home/node/.n8n/custom/n8n-nodes-prisma-airs
     ```

  3. **Restart n8n**
     - Restart your n8n instance to load the new node

  ## Configuration

  ### 1. Create Prisma AIRS Credentials

  In your n8n instance:

  1. Go to **Settings** → **Credentials**
  2. Click **Add Credential**
  3. Search for "Prisma AIRS API"
  4. Fill in:
     - **API Key**: Your Prisma AIRS API key (x-pan-token)
     - **Region**: US, EU (Germany), India, or Custom
     - **Custom Base URL**: (Only if Custom region selected) Your custom Prisma AIRS endpoint
     - **AI Profile Name**: (Optional) Your configured AI security profile name or UUID. Leave empty to use the profile linked to your API key

  ### 2. Add Node to Workflow

  1. In your workflow, click **Add Node**
  2. Search for "Prisma AIRS"
  3. Select the operation:
     - **Prompt Scan**: Scan user input for threats
     - **Response Scan**: Scan AI responses for violations
     - **Dual Scan**: Scan both prompt and response with optional context
     - **Batch Scan**: Process multiple items (up to 5) in parallel
     - **Mask Data**: Scan and automatically mask sensitive data

  ## Usage Examples

  ### Basic Prompt Scanning

  ```json
  {
    "operation": "promptScan",
    "scanMode": "sync",
    "content": "Tell me how to hack into a system"
  }
  ```

  ### Async Large Content Scanning

  ```json
  {
    "operation": "responseScan",
    "scanMode": "async",
    "content": "{{$json.largeAIResponse}}",
    "additionalOptions": {
      "maxPollingDuration": 60000,
      "pollingInterval": 3000
    }
  }
  ```

  ### Dual Scanning with Context

  ```json
  {
    "operation": "dualScan",
    "scanMode": "sync",
    "promptContent": "{{$json.userInput}}",
    "responseContent": "{{$json.aiResponse}}",
    "context": "{{$json.contextDocument}}"
  }
  ```

  ### Batch Scanning Multiple Items

  ```json
  {
    "operation": "batchScan",
    "scanMode": "async",
    "batchItems": {
      "items": [
        {
          "itemType": "prompt",
          "promptContent": "First prompt to scan"
        },
        {
          "itemType": "response",
          "responseContent": "AI generated response"
        },
        {
          "itemType": "both",
          "promptContent": "User question",
          "responseContent": "AI answer"
        }
      ]
    }
  }
  ```

  ### Data Masking for Sensitive Content

  ```json
  {
    "operation": "maskData",
    "scanMode": "sync",
    "maskContent": "My credit card is 4111-1111-1111-1111"
  }
  ```

  ### Dynamic Profile Override

  ```json
  {
    "operation": "promptScan",
    "scanMode": "sync",
    "content": "{{$json.userInput}}",
    "additionalOptions": {
      "aiProfileOverride": "strict-production-profile"
    }
  }
  ```

  Or using a profile UUID:

  ```json
  {
    "operation": "promptScan",
    "scanMode": "sync",
    "content": "{{$json.userInput}}",
    "additionalOptions": {
      "aiProfileOverride": "03b32734-d06d-4bb7-a8df-ac5147630ce8"
    }
  }
  ```

  ## API Response Format

  ```json
  {
    "operation": "promptScan",
    "scanMode": "sync",
    "transactionId": "n8n-12345-67890",
    "action": "allow",
    "category": "benign",
    "confidence": 0.95,
    "scan_id": "abc-123-def",
    "blocked": false,
    "violations": [],
    "metadata": {
      "scan_time": "2025-10-21T10:30:00Z",
      "ai_model": "gpt-4",
      "profile": "production-security-profile"
    },
    "workflowId": "rKU3xnZb5S1ayJCG",
    "workflowName": "Customer Support Bot",
    "executionId": "385",
    "executionMode": "manual",
    "environment": "production",
    "timestamp": "2025-10-21T10:30:00Z"
  }
  ```

  ### Attribution Metadata

  The node automatically enriches all outputs with n8n workflow context for enhanced attribution and tracking:

  - **workflowId**: Unique identifier for the workflow
  - **workflowName**: Human-readable workflow name
  - **executionId**: Unique ID for this specific execution
  - **executionMode**: How the workflow was triggered (`manual`, `webhook`, `trigger`, `cli`)
  - **environment**: Optional environment identifier (if configured)

  This metadata is ideal for:
  - **AI Gateway Integration**: Pass to upstream services 
  - **Cost Attribution**: Track usage by workflow or execution
  - **Audit Trails**: Correlate security scans with workflow runs
  - **Multi-tenant Tracking**: Identify which workflows generated requests

  ## Configuration Options

  ### Required Parameters

  - **Content**: Text to scan (for single operations)
  - **Prompt Content**: Prompt text (for dual scan)
  - **Response Content**: Response text (for dual scan)
  - **Batch Items**: Array of items (for batch scan)
  - **Mask Content**: Content to mask (for mask data operation)

  ### Optional Parameters

  - **Context**: Grounding context for dual scan (up to 100K characters)
  - **AI Profile Override**: Override default profile (name or UUID)
  - **Transaction ID**: Custom tracking identifier
  - **AI Model**: Model identifier for metadata (default: 'n8n-integration')
  - **Application Name**: Source application name. Defaults to 'n8n'. If you provide a custom name (e.g., 'testapp'), it will be formatted as 'n8n-testapp'
  - **User ID**: End user identifier (default: 'n8n-user')
  - **Environment**: Optional environment tag for output tracking (e.g., 'production', 'staging', 'development')
    - Note: This field is for workflow-level tracking only and appears in the output
    - The actual environment used by Prisma AIRS is configured in Strata Cloud Manager at the application level
  - **Timeout**: Request timeout (default: 30000ms)
  - **Max Retries**: Retry attempts (default: 3, max: 6)
  - **Polling Interval**: Async polling frequency (default: 2000ms, min: 1000ms)
  - **Max Polling Duration**: Async timeout (default: 300000ms)

  ## Error Handling

  The node includes comprehensive error handling:

  - **Retry Logic**: Exponential backoff for transient failures
  - **Timeout Management**: Configurable timeouts for all operations
  - **Content Validation**: Size limits enforced (2MB sync, 5MB async)
  - **API Error Handling**: Proper HTTP status code handling
  - **Circuit Breaker**: Prevents cascading failures

  ## Testing

  ### Unit Tests

  ```bash
  npm test
  ```

  ### Integration Testing

  1. Configure valid Prisma AIRS credentials
  2. Create test workflows in n8n
  3. Test all operations (sync/async, prompt/response/dual)
  4. Validate error scenarios



  ## Development

  ### Building

  ```bash
  npm run build
  ```

  ### Linting

  ```bash
  npm run lint
  npm run lintfix
  ```

  ### Watching for Changes

  ```bash
  npm run dev
  ```

  ## Security Considerations

  - API keys are encrypted using n8n's credential system
  - No content is logged or stored by the node
  - All communication uses HTTPS/TLS
  - Proper error handling prevents information leakage

  ## Support

  For issues and questions:

  1. Check the [troubleshooting guide](https://pan.dev/prisma-airs/scan/api/)
  2. Review n8n community node documentation
  3. Contact your Prisma AIRS administrator

  ## License

  MIT License - See LICENSE file for details

  ## Contributing

  Contributions are welcome! To contribute:

  1. Fork the repository
  2. Create feature branches from `main`
  3. Test thoroughly with real Prisma AIRS API
  4. Submit pull requests for review
  5. Ensure all tests and linting pass before merging

  ## Changelog

  ### Version 0.2.1 (Upcoming)
  - **New**: AI Profile is now optional - use API key with linked profile or specify profile name/UUID
  - **New**: Smart application name formatting - defaults to 'n8n', custom names are prefixed (e.g., 'testapp' → 'n8n-testapp')
  - Credential test now validates API key connectivity without requiring profile specification

  ### Version 0.2.0
  - **New**: Automatic attribution metadata (workflowId, workflowName, executionId, executionMode) in all outputs
  - **New**: Custom region support for future Prisma AIRS deployments
  - **New**: Optional environment tag field for workflow-level tracking in outputs
  - **New**: India region support
  - **Fixed**: Better handling of UUID vs profile name in credentials
  - Fully backward compatible with v0.1.x

  ### Version 0.1.1
  - Bug fixes and stability improvements

  ### Version 0.1.0
  - Initial implementation
  - All core features implemented
  - Production-ready with comprehensive error handling
  - Support for sync/async operations
  - Regional endpoint support (US, EU)
  - Full TypeScript implementation

ai_documentation_summary:
  {"purpose":"Scans AI prompts and responses for security threats using Palo Alto Networks Prisma AIRS API within n8n workflows.","capabilities":["Prompt scanning","Response scanning","Dual scanning (prompt and response)","Batch scanning (up to 5 items)","Data masking for sensitive content","Contextual grounding (up to 100K characters)","Synchronous scanning (2MB limit)","Asynchronous scanning (5MB limit)","Dynamic profile selection via name or UUID","Regional endpoint support (US, EU, India, Custom)"],"authentication":"API Key (Prisma AIRS x-pan-token)","commonUseCases":["Security compliance for AI-generated content","Preventing prompt injection attacks","Automated data masking in AI workflows","Real-time threat detection in customer support bots","Batch processing of AI interactions for security audits"],"limitations":["Synchronous mode limited to 2MB content","Async mode limited to 5MB content","Batch operations limited to 5 items per request","Context validation limited to 100K characters","Requires Strata Cloud Manager access to configure security profiles"],"relatedNodes":["n8n HTTP Request","n8n Code Node","n8n Credential Manager"]}


node_type: n8n-nodes-formaloo.formalooTrigger
package_name: n8n-nodes-formaloo
display_name: Formaloo Trigger
description: Trigger workflow on Formaloo form submissions and updates
category: Community
development_style: declarative
version: 1
properties_schema: []
operations: []
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:36
author_name: formaloohq
author_github_url: https://github.com/formaloo/
npm_package_name: n8n-nodes-formaloo
npm_version: 1.6.0
community_fetched_at: 2026-04-16T09:43:36.070Z
ai_summary_generated_at: 2026-03-25 22:51:43
npm_readme:
  # n8n-nodes-formaloo

  This package provides n8n nodes for integrating with [Formaloo](https://formaloo.com), a form builder platform.

  ## Nodes

  ### Formaloo Trigger
  - **Node Name**: `Formaloo Trigger`
  - **Type**: Trigger
  - **Description**: Triggers workflows when forms are submitted or updated in Formaloo
  - **Events Supported**:
    - Form Submit
    - Row Update
    - Payment Completed
    - All Events

  ### Formaloo Action
  - **Node Name**: `Formaloo`
  - **Type**: Action
  - **Description**: Submit data to Formaloo forms with advanced field type handling
  - **Operations**:
    - Submit Form: Submit data to a specific Formaloo form with automatic field type conversion

  ## Credentials

  The nodes require Formaloo API credentials with the following fields:
  - **Secret API**: Your Formaloo secret API key (used for JWT authentication)
  - **API Key**: Your Formaloo API key (used for API requests)

  These credentials are used to:
  1. Generate JWT tokens for authentication
  2. Make API requests to Formaloo endpoints
  3. Create and manage webhooks

  ### Prerequisites
  - A Formaloo account with API access
  - Your Formaloo Secret API key
  - Your Formaloo API key

  ## Compatibility

  - **Minimum n8n version**: 0.1.0
  - **Tested with n8n version**: 1.17.0+
  - **Node.js version**: 20.15 or higher

  ## Installation

  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.

  Alternatively, you can install manually:

  1. Install the package:
     ```bash
     npm install n8n-nodes-formaloo
     ```

  2. Add the nodes to your n8n instance by copying the `dist` folder to your n8n custom nodes directory.

  ## Usage

  ### Setting up the Trigger Node

  1. Add a "Formaloo Trigger" node to your workflow
  2. Configure your Formaloo API credentials
  3. Select the form you want to monitor
  4. Choose the event type (form submit, row update, etc.)
  5. The node will create a webhook in Formaloo and trigger your workflow when events occur

  ### Setting up the Action Node

  1. Add a "Formaloo" node to your workflow
  2. Configure your Formaloo API credentials
  3. Select the form you want to submit to
  4. Add form fields with their IDs and values
  5. The node automatically handles field type conversion for complex fields

  For new users, check out the [Try it out](https://docs.n8n.io/try-it-out/) documentation to get started with n8n.

  ## Field Types

  ### Unsupported Field Types
  The following field types are currently **not supported** and will be filtered out from the field selection:
  - `matrix` - Matrix fields
  - `table` - Table fields
  - `lookup` - Lookup fields
  - `user` - User fields
  - `profile` - Profile fields
  - `linked_rows` - Linked rows fields
  - `repeating_section` - Repeating section fields

  ### Multiple Choice Fields
  For **Multiple Select** fields, use comma-separated values to select multiple options:

  **Example:**
  ```
  Field Value: "Option 1, Option 2, Option 3"
  ```

  **Note:** Make sure to use the exact option titles as they appear in your Formaloo form.

  ### City/Country Fields
  For **City** and **Country** fields, the node automatically searches and maps your input to the correct Formaloo option:

  **Example:**
  ```
  Field Value: "New York" or "United States"
  ```

  The node will automatically find the matching city/country and submit the correct slug.

  ## API Endpoints

  The nodes use the following Formaloo API endpoints:
  - **Forms List**: `GET https://api.formaloo.me/v3.0/forms/`
  - **Form Details**: `GET https://api.formaloo.me/v3.0/forms/{formSlug}/`
  - **Webhooks**: `POST/GET/DELETE https://api.formaloo.me/v3.0/forms/{formSlug}/webhooks/`
  - **Form Submit**: `POST https://api.formaloo.me/v3.0/form-displays/slug/{formSlug}/submit/`
  - **Field Options**: `GET https://api.formaloo.me/v3.0/fields/{fieldSlug}/`
  - **City/Country Search**: `GET https://api.formaloo.me/v4/fields/{fieldSlug}/choices/?search={searchValue}`

  ## Resources

  * [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
  * [Formaloo API Documentation](https://docs.formaloo.com/)
  * [Formaloo Website](https://formaloo.com)

  ## Development

  ### Local Development

  1. Clone the repository and install dependencies:
     ```bash
     git clone https://github.com/formaloo/n8n-nodes-formaloo.git
     cd n8n-nodes-formaloo
     npm install
     ```

  2. Build and test locally:
     ```bash
     npm run build
     npm run start
     ```

     This will build the package and start n8n with your custom node loaded at http://localhost:5678

     **Alternative (manual):**
     ```bash
     npm run build
     N8N_CUSTOM_EXTENSIONS=$(pwd) npx n8n start
     ```

     **Windows:**
     ```cmd
     set N8N_CUSTOM_EXTENSIONS=%CD% & npx n8n start
     ```

  3. After making changes, rebuild and restart n8n:
     ```bash
     npm run build
     ```

  ### Available Scripts

  - `npm run build` - Build TypeScript to JavaScript
  - `npm run dev` - Watch mode (auto-rebuild on changes)
  - `npm run start` - Build and start n8n for testing
  - `npm run lint` - Check code quality
  - `npm run lintfix` - Auto-fix linting issues
  - `npm run format` - Format code with Prettier

  ## Publishing

  ### Publishing to npm

  1. Update version in `package.json`

  2. Build and test:
     ```bash
     npm run build
     npm run lint
     npm run start  # Test manually
     ```

  3. Publish:
     ```bash
     npm publish --access public
     ```

     The `prepublishOnly` script will automatically build and lint before publishing.

  4. Create and push git tag:
     ```bash
     git tag -a v1.5.0 -m "Release version 1.5.0"
     git push origin main
     git push origin v1.5.0
     ```

  ## Version History

  ### 1.5.0
  - Current version
  - ResourceLocator with search functionality for form selection
  - Improved form loading performance
  - Enhanced error handling with `pairedItem` support
  - Migrated to `httpRequestWithAuthentication`
  - Backward compatibility with deprecated functions

  ### Previous Versions
  - See git tags and GitHub releases for detailed version history

  ## License

  [MIT](LICENSE.md)

ai_documentation_summary:
  {"purpose":"Triggers n8n workflows when Formaloo forms are submitted or updated, and submits data to Formaloo forms with automatic field type conversion.","capabilities":["Trigger workflow on form submission","Trigger workflow on row updates","Trigger workflow on payment completion","Submit form data to Formaloo","Automatic field type conversion for complex fields","City/Country auto-mapping","Multiple select field support with comma-separated values","Webhook creation and management","ResourceLocator search for form selection"],"authentication":"API Key required (Secret API key for JWT authentication, API Key for API requests)","commonUseCases":["Automated email notifications on form submission","Data synchronization between Formaloo and other systems","Payment processing workflows","Form data validation and processing","Lead capture automation"],"limitations":["Matrix fields are not supported","Table fields are not supported","Lookup fields are not supported","User fields are not supported","Profile fields are not supported"],"relatedNodes":["n8n-nodes-base.httpRequest","n8n-nodes-base.webhook","n8n-nodes-base.formula"]}


node_type: n8n-nodes-docmiral.docmiral
package_name: n8n-nodes-docmiral
display_name: DocMiral
description: Interact with the DocMiral document generation platform
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:36
author_name: apbdev
author_github_url: https://github.com/DocMiral/
npm_package_name: n8n-nodes-docmiral
npm_version: 0.1.14
community_fetched_at: 2026-04-16T09:43:36.071Z
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "document",
      "options": [
        {
          "name": "Category",
          "value": "category"
        },
        {
          "name": "Document",
          "value": "document"
        },
        {
          "name": "Template",
          "value": "template"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Build Image",
          "value": "buildImage",
          "action": "Build image from a document"
        },
        {
          "name": "Build PDF",
          "value": "buildPdf",
          "action": "Build PDF from a document"
        },
        {
          "name": "Build PPTX",
          "value": "buildPptx",
          "action": "Build power point from a document"
        },
        {
          "name": "Clone",
          "value": "clone",
          "action": "Clone a document"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create a document"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a document"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a document"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List documents"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a document"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "document"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Build Image",
          "value": "buildImage",
          "action": "Build image from a template"
        },
        {
          "name": "Build PDF",
          "value": "buildPdf",
          "action": "Build PDF from a template"
        },
        {
          "name": "Clone",
          "value": "clone",
          "action": "Clone a template"
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create a template"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a template"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a template"
        },
        {
          "name": "Get Schema",
          "value": "getSchema",
          "action": "Get template schema"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List templates"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a template"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "template"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List",
          "value": "list",
          "action": "List categories"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "category"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Build Image",
      "value": "buildImage",
      "action": "Build image from a document",
      "resource": "document"
    },
    {
      "name": "Build PDF",
      "value": "buildPdf",
      "action": "Build PDF from a document",
      "resource": "document"
    },
    {
      "name": "Build PPTX",
      "value": "buildPptx",
      "action": "Build power point from a document",
      "resource": "document"
    },
    {
      "name": "Clone",
      "value": "clone",
      "action": "Clone a document",
      "resource": "document"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a document",
      "resource": "document"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a document",
      "resource": "document"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a document",
      "resource": "document"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List documents",
      "resource": "document"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a document",
      "resource": "document"
    },
    {
      "name": "Build Image",
      "value": "buildImage",
      "action": "Build image from a template",
      "resource": "template"
    },
    {
      "name": "Build PDF",
      "value": "buildPdf",
      "action": "Build PDF from a template",
      "resource": "template"
    },
    {
      "name": "Clone",
      "value": "clone",
      "action": "Clone a template",
      "resource": "template"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a template",
      "resource": "template"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a template",
      "resource": "template"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a template",
      "resource": "template"
    },
    {
      "name": "Get Schema",
      "value": "getSchema",
      "action": "Get template schema",
      "resource": "template"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List templates",
      "resource": "template"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a template",
      "resource": "template"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List categories",
      "resource": "category"
    }
  ]

npm_readme:
  # n8n-nodes-docmiral

  An [n8n](https://n8n.io) community node for [DocMiral](https://docmiral.com) — automate document generation, AI-powered filling, PDF/PPTX/image export, and more directly from your n8n workflows.

  ---

  ## Features

  - Generate documents from templates written in **HTML & Tailwind CSS** — full styling control with structured data
  - Export to **PDF**, **PowerPoint (PPTX)**, or **Image** — from an existing document or directly from a template in a single step
  - Use **TARS AI** to fill documents from natural language, parse CVs, extract text, and smart-clone documents
  - Manage templates (create, update, clone, build, get schema)
  - Browse categories and filter templates by library or category

  ---

  ## Installation

  ### In n8n (Community Nodes)

  1. Open your n8n instance
  2. Go to **Settings → Community Nodes**
  3. Click **Install a community node**
  4. Enter `n8n-nodes-docmiral` and confirm

  ### Self-hosted / Docker

  ```bash
  # Inside your n8n data directory
  npm install n8n-nodes-docmiral
  ```

  Restart n8n after installation.

  ---

  ## Credentials

  Create a **DocMiral API** credential with:

  | Field | Value |
  |---|---|
  | **API Token** | Your DocMiral API token (from your account settings) |
  | **Base URL** | `https://api.docmiral.com/api` |

  > **Important:** Use `https://` — HTTP will trigger a redirect that breaks POST requests.

  ---

  ## Resources & Operations

  ### Document

  Manage your DocMiral documents (entities).

  | Operation | Description |
  |---|---|
  | **List** | Fetch a paginated list of documents (`limit`, `offset`) |
  | **Get** | Get a single document by ID |
  | **Create** | Create a document from a template. Supports `init` (empty), `data`, and `settings` |
  | **Update** | Update the data of an existing document |
  | **Delete** | Delete a document by ID |
  | **Clone** | Clone an existing document |
  | **Build PDF** | Export a document as a PDF binary |
  | **Build PPTX** | Export a document as a PowerPoint binary |
  | **Build Image** | Export a specific page of a document as a PNG image |

  #### Build Source (PDF / PPTX / Image)

  All three build operations support two modes via the **Build Source** toggle:

  - **By Document ID** — build from an existing document (provide its ID)
  - **Directly from Template** — create a document on the fly and immediately export it. Accepts the same `Template ID`, `Name`, `Init`, `Settings`, and `Data` fields as Create. The **Keep Document** toggle controls whether the intermediate document is saved to your list or automatically deleted after the file is generated.

  #### Document Data Format

  When creating or updating a document, field data and rendering settings are combined inside a single `data` object:

  ```json
  {
    "templateId": "your-template-id",
    "init": false,
    "data": {
      "settings": {
        "size": "A4",
        "background": "#FFFFFF",
        "color": "#000000",
        "margin": "1in",
        "fontSize": "12pt"
      },
      "title": "My Document Title",
      "recipient_name": "Alice Johnson",
      "items": ["Item A", "Item B"]
    }
  }
  ```

  ---

  ### Template

  Manage reusable document templates.

  | Operation | Description |
  |---|---|
  | **List** | List templates. Filter by `Category ID` and/or **Library** (Public / My Library) |
  | **Get** | Get a template by ID |
  | **Create** | Create a new template with name, category, HTML, and settings |
  | **Update** | Update a template's name, settings, HTML, header, or footer |
  | **Delete** | Delete a template by ID |
  | **Clone** | Clone a template |
  | **Build PDF** | Render a template preview as PDF |
  | **Build Image** | Render all pages of a template as PNG images (one output item per page) |
  | **Get Schema** | Get the variable schema of a template in Standard, JSON Schema, or OpenAI format. Optionally return sample data with default values. |

  #### Template Settings

  ```json
  {
    "size": "A4",
    "margin": "1in",
    "padding": "0",
    "background": "#FFFFFF",
    "color": "#000000",
    "fontSize": "12pt"
  }
  ```

  ---

  ### Category

  | Operation | Description |
  |---|---|
  | **List** | Fetch all available template categories |

  ---

  ## Example Workflows

  ### Generate a PDF report from a template

  1. **DocMiral** → Document: **Build PDF**
     - Build Source: `Directly from Template`
     - Template ID: `your-template-id`
     - Data (JSON): `{ "title": "Q1 Report", "revenue": 120000 }`
     - Settings (JSON): `{ "size": "A4" }`
     - Keep Document: `false`
  2. **Write Binary File** or **Send Email** with the PDF attachment

  ---

  ### AI-fill a document from a form submission

  1. **Webhook** — receive form data
  2. **DocMiral** → Document: **Create**
     - Template ID: `your-template-id`
     - Data (JSON): `={{ $json }}`
  3. **DocMiral** → TARS: **Chat**
     - Document ID: `={{ $json.data.id }}`
     - Message: `"Update the summary section with a professional tone"`
  4. **DocMiral** → Document: **Build PDF**
     - Build Source: `By Document ID`
     - Document ID: `={{ $json.data.id }}`

  ---

  ### Parse a CV and populate a document

  1. **Read Binary File** — load the CV PDF
  2. **DocMiral** → TARS: **Parse CV**
  3. **DocMiral** → Document: **Create**
     - Template ID: `your-cv-template-id`
     - Data (JSON): `={{ $json.data }}`

  ---

  ## Compatibility

  | Requirement | Version |
  |---|---|
  | n8n | `>= 1.0.0` |
  | n8n-workflow | `>= 2.12.0` |
  | Node.js | `>= 18` |

  ---

  ## License

  MIT — see [LICENSE](https://github.com/DocMiral/n8n-nodes-docmiral/blob/master/LICENSE)

  ---

  ## Links

  - [DocMiral Website](https://docmiral.com)
  - [DocMiral API Docs](https://docmiral.com/api)
  - [GitHub Repository](https://github.com/DocMiral/n8n-nodes-docmiral)
  - [Report an Issue](https://github.com/DocMiral/n8n-nodes-docmiral/issues)


node_type: n8n-nodes-chat-data.chatData
package_name: n8n-nodes-chat-data
display_name: Chat Data
description: Basic Chat Data Node
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:36
author_name: chatdata
author_github_url: https://github.com/chat-data-llc/
npm_package_name: n8n-nodes-chat-data
npm_version: 1.2.1
community_fetched_at: 2026-04-16T09:43:36.071Z
ai_summary_generated_at: 2026-03-25 22:47:20
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "action",
      "options": [
        {
          "name": "Action",
          "value": "action"
        },
        {
          "name": "Chatbot",
          "value": "chatbot"
        }
      ],
      "description": "Choose a resource",
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "sendMessage",
      "options": [
        {
          "name": "Send a Message",
          "value": "sendMessage",
          "action": "Send a message to a chat",
          "description": "Send a message to a chat"
        },
        {
          "name": "Get Leads",
          "value": "getLeads",
          "action": "Get leads",
          "description": "Retrieve leads/customers from a chatbot"
        },
        {
          "name": "Get Conversations",
          "value": "getConversations",
          "action": "Get conversations",
          "description": "Retrieve conversation history from a chatbot"
        },
        {
          "name": "Append a Message",
          "value": "appendMessage",
          "action": "Append a message to an existing conversation",
          "description": "Append a message to an existing conversation as a human agent or assistant"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "action"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "createChatbot",
      "options": [
        {
          "name": "Create Chatbot",
          "value": "createChatbot",
          "action": "Create a chatbot",
          "description": "Create a new chatbot"
        },
        {
          "name": "Retrain Chatbot",
          "value": "retrainChatbot",
          "action": "Retrain a chatbot",
          "description": "Retrain a chatbot with new data"
        },
        {
          "name": "Update Base Prompt",
          "value": "updateBasePrompt",
          "action": "Update a base prompt",
          "description": "Update a chatbot's base prompt"
        },
        {
          "name": "Get Chatbot Training Status",
          "value": "getChatbotStatus",
          "action": "Get chatbot training status",
          "description": "Retrieve the training status of a chatbot"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "chatbot"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Send a Message",
      "value": "sendMessage",
      "action": "Send a message to a chat",
      "description": "Send a message to a chat",
      "resource": "action"
    },
    {
      "name": "Get Leads",
      "value": "getLeads",
      "action": "Get leads",
      "description": "Retrieve leads/customers from a chatbot",
      "resource": "action"
    },
    {
      "name": "Get Conversations",
      "value": "getConversations",
      "action": "Get conversations",
      "description": "Retrieve conversation history from a chatbot",
      "resource": "action"
    },
    {
      "name": "Append a Message",
      "value": "appendMessage",
      "action": "Append a message to an existing conversation",
      "description": "Append a message to an existing conversation as a human agent or assistant",
      "resource": "action"
    },
    {
      "name": "Create Chatbot",
      "value": "createChatbot",
      "action": "Create a chatbot",
      "description": "Create a new chatbot",
      "resource": "chatbot"
    },
    {
      "name": "Retrain Chatbot",
      "value": "retrainChatbot",
      "action": "Retrain a chatbot",
      "description": "Retrain a chatbot with new data",
      "resource": "chatbot"
    },
    {
      "name": "Update Base Prompt",
      "value": "updateBasePrompt",
      "action": "Update a base prompt",
      "description": "Update a chatbot's base prompt",
      "resource": "chatbot"
    },
    {
      "name": "Get Chatbot Training Status",
      "value": "getChatbotStatus",
      "action": "Get chatbot training status",
      "description": "Retrieve the training status of a chatbot",
      "resource": "chatbot"
    }
  ]

npm_readme:
  ![Banner image](https://user-images.githubusercontent.com/10284570/173569848-c624317f-42b1-45a6-ab09-f0ea3c247648.png)

  # n8n-nodes-chat-data

  This is the official n8n integration for [Chat Data](https://chat-data.com). It provides nodes to interact with the ChatData platform, allowing you to manage chatbots, send messages, retrieve leads, and more.

  ## Prerequisites

  To use the ChatData integration, you must have:

  - A paid ChatData account. You can create an account at [chat-data.com](https://chat-data.com).
  - Your ChatData API key, which you can obtain from your account settings.

  ## Installation

  Follow these steps to install this node in your n8n instance:

  ```bash
  npm install n8n-nodes-chat-data
  ```

  For n8n desktop app/local installation:

  ```bash
  n8n-node-dev --install n8n-nodes-chat-data
  ```

  ## Node Reference

  ### Chat Data

  This node can be found in the 'Action' category in n8n.

  #### Operations

  The operations in this node are organized into the following categories:

  ##### Action

  - **Send a Message**: Send a chat message to a chatbot
  - **Get Leads**: Retrieve customer leads from a chatbot
  - **Get Conversations**: Retrieve conversation history from a chatbot
  - **Append a Message**: Send a message to an existing conversation as a human agent or bot

  ##### Chatbot

  - **Create Chatbot**: Set up a new AI-powered chatbot
  - **Retrain Chatbot**: Update a chatbot with new data
  - **Update Base Prompt**: Modify a chatbot's base prompt
  - **Get Chatbot Training Status**: Check the status of a chatbot's training

  ##### Other

  - **Make API Call**: Make a custom request to any Chat Data API endpoint

  ---

  ### Chat Data Trigger

  This node is used to receive real-time events from Chat Data via webhooks. You can find it in the 'Trigger' category in n8n.

  #### Available Triggers

  - **On New Message**: Triggered when a new chat message is received
  - **On Lead Submission**: Triggered when a customer submits lead information
  - **On Live Chat Escalation**: Triggered when a chat is escalated to a human agent

  1. After setting up the trigger, you'll see webhook registration details in the execution output
  2. When a webhook event is received, the node logs detailed information about:
     - Raw webhook payload
     - Parsed event data
     - Event type matching
     - Chatbot ID verification

  > **Note:** If your webhook isn't triggering as expected, check the n8n logs for messages starting with "Webhook triggered" to see detailed information about incoming data.

  > **Important:** For webhook testing, ensure the `chatbot_id` in your trigger configuration matches the `chatbot_id` field in the incoming webhook payload.

  ---

  ## Authentication

  This node requires an API Key for authentication. To set this up:

  1. Create an API key in your ChatData account:
     - Log in to your ChatData account
     - In the top right corner, click your Username > Account Settings
     - In the API Keys section, click Create a new secret key
     - Copy the API key value

  2. In n8n, create a new credential:
     - Choose "ChatDataApi" as the credential type
     - Enter your API key in the API Key field
     - Enter your Chat Data instance URL (usually https://app.chat-data.com)
     - Save the credential

  ## Further Information

  - [ChatData Website](https://chat-data.com)
  - [ChatData API Documentation](https://docs.chat-data.com/api)
  - [ChatData Pricing](https://chat-data.com/pricing)

  ## License

  [MIT](LICENSE.md)

ai_documentation_summary:
  {"purpose":"This n8n node enables interaction with the ChatData platform to manage chatbots, send messages, retrieve leads, and access conversation history.","capabilities":["Send messages to chatbots","Retrieve customer leads","Retrieve conversation history","Append messages to existing conversations","Create new AI-powered chatbots","Retrain chatbots with new data","Update chatbot base prompts","Check chatbot training status","Make custom API calls to ChatData endpoints","Receive real-time webhook events for new messages, lead submissions, and chat escalations"],"authentication":"API Key required via ChatDataApi credential type","commonUseCases":["Automated lead generation from chat interactions","Monitoring and retrieving chat conversation history","Creating and managing custom AI chatbots","Real-time notification of new leads or chat escalations","Custom API integrations with ChatData platform"],"limitations":["Requires a paid ChatData account","Webhook triggers require matching chatbot_id in configuration to incoming payload","Webhook testing requires careful log monitoring for trigger verification"],"relatedNodes":["n8n-nodes-base.webhook","n8n-nodes-base.httpRequest"]}


node_type: n8n-nodes-famulor.famulor
package_name: n8n-nodes-famulor
display_name: Famulor
description: Make phone calls using AI assistants from Famulor platform
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:36
author_name: bekservice
author_github_url: https://github.com/bekservice/n8n-famulor.git
npm_package_name: n8n-nodes-famulor
npm_version: 1.8.0
community_fetched_at: 2026-04-16T09:43:36.072Z
ai_summary_generated_at: 2026-03-25 22:51:43
properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "call",
      "options": [
        {
          "name": "AI",
          "value": "ai"
        },
        {
          "name": "Assistant",
          "value": "assistant"
        },
        {
          "name": "Call",
          "value": "call"
        },
        {
          "name": "Campaign",
          "value": "campaign"
        },
        {
          "name": "Conversation",
          "value": "conversation"
        },
        {
          "name": "Lead",
          "value": "lead"
        },
        {
          "name": "SMS",
          "value": "sms"
        },
        {
          "name": "Tool",
          "value": "tool"
        },
        {
          "name": "User",
          "value": "user"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "make",
      "options": [
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a call",
          "description": "Delete a specific call record"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a call",
          "description": "Get details of a specific call by ID"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List all calls",
          "description": "List all calls with filtering options"
        },
        {
          "name": "Make",
          "value": "make",
          "action": "Make a phone call",
          "description": "Make a phone call using an AI assistant"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "call"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getAssistants",
      "options": [
        {
          "name": "Get Assistants",
          "value": "getAssistants",
          "action": "Get assistants",
          "description": "Get all assistants from your account"
        },
        {
          "name": "Get Languages",
          "value": "getLanguages",
          "action": "Get languages",
          "description": "Get all available languages for assistant configuration"
        },
        {
          "name": "Get Models",
          "value": "getModels",
          "action": "Get models",
          "description": "Get all available LLM models for assistant configuration"
        },
        {
          "name": "Get Phone Numbers",
          "value": "getPhoneNumbers",
          "action": "Get phone numbers",
          "description": "Get available phone numbers for assistant assignment"
        },
        {
          "name": "Get Voices",
          "value": "getVoices",
          "action": "Get voices",
          "description": "Get all available voices for assistant configuration"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "assistant"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List",
          "value": "list",
          "action": "List all campaigns",
          "description": "List all campaigns"
        },
        {
          "name": "Update Status",
          "value": "updateStatus",
          "action": "Update campaign status",
          "description": "Start or stop a campaign"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "campaign"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a lead",
          "description": "Delete a lead"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List all leads",
          "description": "List all leads"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a lead",
          "description": "Update an existing lead"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "lead"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "send",
      "options": [
        {
          "name": "Send",
          "value": "send",
          "action": "Send an SMS",
          "description": "Send an SMS message"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "sms"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a tool",
          "description": "Create a new mid call tool"
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete a tool",
          "description": "Delete a mid call tool"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a tool",
          "description": "Get a specific mid call tool by ID"
        },
        {
          "name": "List",
          "value": "list",
          "action": "List all tools",
          "description": "List all mid call tools"
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update a tool",
          "description": "Update an existing mid call tool"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "tool"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get",
          "value": "get",
          "action": "Get current user",
          "description": "Get the authenticated user's profile information"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "user"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "generateReply",
      "options": [
        {
          "name": "Generate Reply",
          "value": "generateReply",
          "action": "Generate AI reply",
          "description": "Generate an AI response using an assistant, identified by an external customer identifier"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "ai"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create",
          "value": "create",
          "action": "Create a conversation",
          "description": "Create a new conversation session with an AI assistant"
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get a conversation",
          "description": "Retrieve the message history of a conversation"
        },
        {
          "name": "Send Message",
          "value": "sendMessage",
          "action": "Send a message",
          "description": "Send a message in an existing conversation and receive the assistant's response"
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "conversation"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a call",
      "description": "Delete a specific call record",
      "resource": "call"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a call",
      "description": "Get details of a specific call by ID",
      "resource": "call"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List all calls",
      "description": "List all calls with filtering options",
      "resource": "call"
    },
    {
      "name": "Make",
      "value": "make",
      "action": "Make a phone call",
      "description": "Make a phone call using an AI assistant",
      "resource": "call"
    },
    {
      "name": "Get Assistants",
      "value": "getAssistants",
      "action": "Get assistants",
      "description": "Get all assistants from your account",
      "resource": "assistant"
    },
    {
      "name": "Get Languages",
      "value": "getLanguages",
      "action": "Get languages",
      "description": "Get all available languages for assistant configuration",
      "resource": "assistant"
    },
    {
      "name": "Get Models",
      "value": "getModels",
      "action": "Get models",
      "description": "Get all available LLM models for assistant configuration",
      "resource": "assistant"
    },
    {
      "name": "Get Phone Numbers",
      "value": "getPhoneNumbers",
      "action": "Get phone numbers",
      "description": "Get available phone numbers for assistant assignment",
      "resource": "assistant"
    },
    {
      "name": "Get Voices",
      "value": "getVoices",
      "action": "Get voices",
      "description": "Get all available voices for assistant configuration",
      "resource": "assistant"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List all campaigns",
      "description": "List all campaigns",
      "resource": "campaign"
    },
    {
      "name": "Update Status",
      "value": "updateStatus",
      "action": "Update campaign status",
      "description": "Start or stop a campaign",
      "resource": "campaign"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a lead",
      "description": "Delete a lead",
      "resource": "lead"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List all leads",
      "description": "List all leads",
      "resource": "lead"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a lead",
      "description": "Update an existing lead",
      "resource": "lead"
    },
    {
      "name": "Send",
      "value": "send",
      "action": "Send an SMS",
      "description": "Send an SMS message",
      "resource": "sms"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a tool",
      "description": "Create a new mid call tool",
      "resource": "tool"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete a tool",
      "description": "Delete a mid call tool",
      "resource": "tool"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a tool",
      "description": "Get a specific mid call tool by ID",
      "resource": "tool"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List all tools",
      "description": "List all mid call tools",
      "resource": "tool"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update a tool",
      "description": "Update an existing mid call tool",
      "resource": "tool"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get current user",
      "description": "Get the authenticated user's profile information",
      "resource": "user"
    },
    {
      "name": "Generate Reply",
      "value": "generateReply",
      "action": "Generate AI reply",
      "description": "Generate an AI response using an assistant, identified by an external customer identifier",
      "resource": "ai"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create a conversation",
      "description": "Create a new conversation session with an AI assistant",
      "resource": "conversation"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get a conversation",
      "description": "Retrieve the message history of a conversation",
      "resource": "conversation"
    },
    {
      "name": "Send Message",
      "value": "sendMessage",
      "action": "Send a message",
      "description": "Send a message in an existing conversation and receive the assistant's response",
      "resource": "conversation"
    }
  ]

npm_readme:
  # 🤖 Famulor for n8n

  <div align="center">

  ![Famulor Logo](https://raw.githubusercontent.com/n8n-io/n8n/master/assets/n8n-logo.png)

  **The most powerful AI calling automation for n8n workflows**

  [![npm version](https://badge.fury.io/js/n8n-nodes-famulor.svg)](https://www.npmjs.com/package/n8n-nodes-famulor)
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

  [English](#english) • [Deutsch](#deutsch) • [Installation](#installation) • [Documentation](https://docs.famulor.de/)

  ---

  </div>

  ## English

  **Transform your n8n workflows with AI-powered phone calls**

  This official n8n community node integrates [Famulor](https://www.famulor.io/)'s cutting-edge AI calling platform directly into your automation workflows. Make intelligent phone calls, receive real-time call data, and automate complex communication processes with ease.

  ### Why Famulor?

  🎯 **AI-Powered Conversations** - Deploy intelligent virtual assistants that conduct natural phone conversations  
  📊 **Real-time Analytics** - Get instant call results, transcripts, and extracted data  
  🔄 **Seamless Integration** - Native n8n integration with no complex setup required  
  📱 **Global Reach** - Make calls worldwide with enterprise-grade reliability  

  ---

  ## Deutsch

  **Verwandeln Sie Ihre n8n-Workflows mit KI-gestützten Telefonanrufen**

  Dieser offizielle n8n-Community-Node integriert [Famulors](https://www.famulor.de/) hochmoderne KI-Anrufplattform direkt in Ihre Automatisierungs-Workflows. Führen Sie intelligente Telefonanrufe durch, erhalten Sie Echtzeit-Anrufdaten und automatisieren Sie komplexe Kommunikationsprozesse mit Leichtigkeit.

  ### Warum Famulor?

  🎯 **KI-gestützte Gespräche** - Setzen Sie intelligente virtuelle Assistenten ein, die natürliche Telefongespräche führen  
  📊 **Echtzeit-Analytik** - Erhalten Sie sofortige Anrufergebnisse, Transkripte und extrahierte Daten  
  🔄 **Nahtlose Integration** - Native n8n-Integration ohne komplexe Einrichtung  
  📱 **Globale Reichweite** - Führen Sie weltweit Anrufe mit Enterprise-Level-Zuverlässigkeit durch  

  ---

  ## Installation

  ### English
  Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.

  ### Deutsch
  Befolgen Sie die [Installationsanleitung](https://docs.n8n.io/integrations/community-nodes/installation/) in der n8n Community Nodes Dokumentation.

  ---

  ## Operations / Operationen

  ### English

  **Unified Node Interface** - One node, all capabilities

  When you add the **Famulor** node to your workflow, choose between:

  #### 🚀 Actions (Regular Node)
  **📞 Call Operations**
  - **Make Call**: Initiate AI-powered phone conversations
    - Select from your outbound assistants
    - Specify target phone numbers  
    - Add custom variables for personalized conversations
    - Get instant call results and data

  **🤖 Assistant Management**  
  - **Get Assistants**: Retrieve all your AI assistants
    - Fetch complete assistant configurations
    - Access assistant details (name, ID, status, capabilities)
    - Use in any workflow for dynamic assistant selection

  #### ⚡ Triggers (Webhook Node)
  **📋 Call Monitoring**
  - **Call Ended**: Real-time call completion notifications
    - Monitor specific assistants for call events
    - Receive comprehensive call data:
      - Full conversation transcripts
      - AI-extracted variables and insights
      - Call duration, status, and recordings
      - Lead and campaign information
      - Input/output variable mappings

  ### Deutsch

  **Einheitliche Node-Oberfläche** - Ein Node, alle Funktionen

  Wenn Sie den **Famulor**-Node zu Ihrem Workflow hinzufügen, wählen Sie zwischen:

  #### 🚀 Aktionen (Regulärer Node)
  **📞 Anruf-Operationen**
  - **Anruf tätigen**: KI-gestützte Telefongespräche initiieren
    - Auswahl aus Ihren ausgehenden Assistenten
    - Zieltelefonnummern angeben
    - Benutzerdefinierte Variablen für personalisierte Gespräche hinzufügen
    - Sofortige Anrufergebnisse und Daten erhalten

  **🤖 Assistenten-Verwaltung**
  - **Assistenten abrufen**: Alle Ihre KI-Assistenten abrufen
    - Vollständige Assistenten-Konfigurationen laden
    - Zugriff auf Assistenten-Details (Name, ID, Status, Fähigkeiten)
    - Verwendung in jedem Workflow für dynamische Assistenten-Auswahl

  #### ⚡ Trigger (Webhook-Node)
  **📋 Anruf-Überwachung**
  - **Anruf beendet**: Echtzeit-Benachrichtigungen bei Anrufabschluss
    - Überwachung spezifischer Assistenten für Anruf-Events
    - Umfassende Anrufdaten erhalten:
      - Vollständige Gesprächstranskripte
      - KI-extrahierte Variablen und Erkenntnisse
      - Anrufdauer, Status und Aufzeichnungen
      - Lead- und Kampagnen-Informationen
      - Input/Output-Variablen-Zuordnungen

  ---

  ## Credentials / Anmeldedaten

  ### English

  **Quick Setup in 3 Steps**

  1. **Get Your API Key**
     - Sign up at [Famulor](https://app.famulor.de/) (German) or [Famulor.io](https://www.famulor.io/) (English)
     - Navigate to your account settings
     - Generate a new API key

  2. **Configure n8n**
     - Create new credentials of type "Famulor API"
     - Enter your API key
     - Credentials are automatically validated upon save

  3. **Start Automating**
     - Your Famulor account is now connected
     - All assistants and settings sync automatically

  ### Deutsch

  **Schnelle Einrichtung in 3 Schritten**

  1. **API-Schlüssel erhalten**
     - Registrieren Sie sich bei [Famulor](https://app.famulor.de/) (Deutsch) oder [Famulor.io](https://www.famulor.io/) (Englisch)
     - Gehen Sie zu Ihren Kontoeinstellungen
     - Generieren Sie einen neuen API-Schlüssel

  2. **n8n konfigurieren**
     - Erstellen Sie neue Anmeldedaten vom Typ "Famulor API"
     - Geben Sie Ihren API-Schlüssel ein
     - Anmeldedaten werden beim Speichern automatisch validiert

  3. **Automatisierung starten**
     - Ihr Famulor-Konto ist jetzt verbunden
     - Alle Assistenten und Einstellungen synchronisieren automatisch

  ---

  ## Compatibility / Kompatibilität

  ### English
  - **Minimum n8n version**: 0.36.1
  - **Tested with**: n8n 1.0.0+
  - **Platform support**: All n8n deployment types

  ### Deutsch
  - **Minimale n8n-Version**: 0.36.1
  - **Getestet mit**: n8n 1.0.0+
  - **Plattform-Unterstützung**: Alle n8n-Deployment-Typen

  ---

  ## Usage / Verwendung

  ### English

  #### 🎯 Getting Started

  1. **Add the Famulor Node** to your workflow
  2. **Choose your mode**: Action (for outbound operations) or Trigger (for receiving data)
  3. **Configure credentials** using your Famulor API key
  4. **Start automating** your phone operations

  #### 📞 Making Phone Calls (Actions)

  **Quick Setup:**
  1. Select **Action** → **Call** → **Make**
  2. Choose your **outbound assistant** (loaded from your account)
  3. Enter the **target phone number**
  4. Add **custom variables** for personalized conversations:
     ```
     customer_name: "John Smith"
     order_id: "12345"
     appointment_time: "3 PM"
     ```
  5. **Execute** and receive instant results

  #### 🤖 Managing Assistants (Actions)

  **Retrieve All Assistants:**
  1. Select **Action** → **Assistant** → **Get Assistants**
  2. Fetches all assistants with complete configuration data
  3. Use for dynamic assistant selection in complex workflows

  #### ⚡ Real-time Call Monitoring (Triggers)

  **Setup Webhook Triggers:**
  1. Select **Trigger** → **Call** → **Call Ended**
  2. Choose which **assistant to monitor**
  3. Copy the **generated webhook URL**
  4. **Important**: Add this URL to your assistant settings in Famulor dashboard
  5. Enable webhook notifications in your assistant configuration

  **Data You Receive:**
  - 📋 Complete call transcripts and recordings
  - 📊 AI-extracted variables and insights
  - ⏱️ Call duration, timestamps, and status
  - 📱 Phone numbers and participant details
  - 🎯 Campaign and lead information (if applicable)

  ### Deutsch

  #### 🎯 Erste Schritte

  1. **Famulor-Node hinzufügen** zu Ihrem Workflow
  2. **Modus wählen**: Aktion (für ausgehende Operationen) oder Trigger (für Datenempfang)
  3. **Anmeldedaten konfigurieren** mit Ihrem Famulor-API-Schlüssel
  4. **Automatisierung starten** Ihrer Telefon-Operationen

  #### 📞 Telefonanrufe tätigen (Aktionen)

  **Schnelle Einrichtung:**
  1. Wählen Sie **Aktion** → **Call** → **Make**
  2. Wählen Sie Ihren **ausgehenden Assistenten** (aus Ihrem Konto geladen)
  3. Geben Sie die **Zieltelefonnummer** ein
  4. Fügen Sie **benutzerdefinierte Variablen** für personalisierte Gespräche hinzu:
     ```
     kundenname: "Max Mustermann"
     bestell_id: "12345"
     termin_zeit: "15 Uhr"
     ```
  5. **Ausführen** und sofortige Ergebnisse erhalten

  #### 🤖 Assistenten verwalten (Aktionen)

  **Alle Assistenten abrufen:**
  1. Wählen Sie **Aktion** → **Assistant** → **Get Assistants**
  2. Lädt alle Assistenten mit vollständigen Konfigurationsdaten
  3. Verwenden Sie für dynamische Assistenten-Auswahl in komplexen Workflows

  #### ⚡ Echtzeit-Anrufüberwachung (Trigger)

  **Webhook-Trigger einrichten:**
  1. Wählen Sie **Trigger** → **Call** → **Call Ended**
  2. Wählen Sie, welchen **Assistenten Sie überwachen** möchten
  3. Kopieren Sie die **generierte Webhook-URL**
  4. **Wichtig**: Fügen Sie diese URL in Ihre Assistenten-Einstellungen im Famulor-Dashboard hinzu
  5. Aktivieren Sie Webhook-Benachrichtigungen in Ihrer Assistenten-Konfiguration

  **Erhaltene Daten:**
  - 📋 Vollständige Anruftranskripte und Aufzeichnungen
  - 📊 KI-extrahierte Variablen und Erkenntnisse
  - ⏱️ Anrufdauer, Zeitstempel und Status
  - 📱 Telefonnummern und Teilnehmerdetails
  - 🎯 Kampagnen- und Lead-Informationen (falls zutreffend)

  ---

  ## Resources / Ressourcen

  ### English

  📚 **Documentation & Guides**
  - [Famulor Documentation](https://docs.famulor.de/) - Complete platform documentation  
  - [Famulor API Reference](https://docs.famulor.de/api-reference/) - Technical API documentation
  - [n8n Community Nodes Guide](https://docs.n8n.io/integrations/#community-nodes) - n8n integration docs

  🌐 **Platforms & Support**
  - [Famulor.io](https://www.famulor.io/) - English platform & signup
  - [Famulor.de](https://www.famulor.de/) - German platform & signup  
  - [Famulor App](https://app.famulor.de/) - Login to your dashboard

  ### Deutsch

  📚 **Dokumentation & Anleitungen**
  - [Famulor-Dokumentation](https://docs.famulor.de/) - Vollständige Plattform-Dokumentation
  - [Famulor-API-Referenz](https://docs.famulor.de/api-reference/) - Technische API-Dokumentation  
  - [n8n-Community-Nodes-Anleitung](https://docs.n8n.io/integrations/#community-nodes) - n8n-Integrations-Dokumentation

  🌐 **Plattformen & Support**
  - [Famulor.io](https://www.famulor.io/) - Englische Plattform & Anmeldung
  - [Famulor.de](https://www.famulor.de/) - Deutsche Plattform & Anmeldung
  - [Famulor App](https://app.famulor.de/) - Anmeldung zu Ihrem Dashboard

  ---

  ## About Famulor / Über Famulor

  ### English

  Famulor is the leading AI-powered calling platform that revolutionizes business communications. Our intelligent virtual assistants conduct natural phone conversations, extract meaningful data, and integrate seamlessly into your existing workflows.

  **Why Choose Famulor?**
  - 🧠 **Advanced AI** - GPT-powered conversations that sound human  
  - 🔒 **Enterprise Security** - GDPR-compliant with enterprise-grade encryption
  - 🌍 **Global Scale** - Make calls worldwide with local presence
  - 📈 **Proven Results** - Trusted by businesses across industries

  ### Deutsch

  Famulor ist die führende KI-gestützte Anrufplattform, die die Geschäftskommunikation revolutioniert. Unsere intelligenten virtuellen Assistenten führen natürliche Telefongespräche, extrahieren aussagekräftige Daten und integrieren sich nahtlos in Ihre bestehenden Workflows.

  **Warum Famulor wählen?**
  - 🧠 **Fortgeschrittene KI** - GPT-gestützte Gespräche, die menschlich klingen
  - 🔒 **Unternehmenssicherheit** - DSGVO-konform mit Enterprise-Level-Verschlüsselung  
  - 🌍 **Globale Reichweite** - Weltweite Anrufe mit lokaler Präsenz
  - 📈 **Bewährte Ergebnisse** - Vertrauen von Unternehmen aller Branchen

  ---

  <div align="center">

  **Ready to automate your phone calls? / Bereit, Ihre Telefonanrufe zu automatisieren?**

  [🚀 Get Started with Famulor](https://app.famulor.de/) • [📖 Read the Docs](https://docs.famulor.de/) • [💬 Get Support](https://www.famulor.io/support)

  *Built with ❤️ by the Famulor team*

  </div>

ai_documentation_summary:
  {"purpose":"This n8n node enables AI-powered phone call automation by integrating the Famulor platform, allowing users to make calls, manage virtual assistants, and monitor real-time call data within workflows.","capabilities":["Initiate AI-powered outbound phone calls","Retrieve and manage AI assistant configurations","Receive real-time call completion notifications via webhooks","Access full conversation transcripts","Extract AI-generated variables and insights from calls","Retrieve call duration, status, and recordings","Access lead and campaign information","Map input/output variables for personalized conversations"],"authentication":"API key required","commonUseCases":["Automated customer support calls","Lead generation and qualification","Appointment scheduling","Real-time call monitoring and analytics","Personalized outbound marketing campaigns"],"limitations":["Famulor platform is primarily available in German and English","No specific limitations mentioned in the provided README"],"relatedNodes":["n8n Webhook Node","n8n HTTP Request Node","n8n Function Item"]}


node_type: n8n-nodes-late.late
package_name: n8n-nodes-late
display_name: Zernio
category: Community
development_style: declarative
version: 1
credentials_required: []
outputs:
  [
  "main"
  ]

updated_at: 2026-04-16 09:43:36
author_name: paugc
author_github_url: https://github.com/getlatedev/
npm_package_name: n8n-nodes-late
npm_version: 0.5.4
community_fetched_at: 2026-04-16T09:43:36.074Z
ai_summary_generated_at: 2026-03-25 22:47:20
description:
  Schedule and manage social media posts across multiple platforms with Zernio - supporting Twitter/X, Instagram, Facebook, LinkedIn, TikTok, YouTube, Threads, Bluesky, Pinterest, Reddit, Telegram, Google Business, and Snapchat

properties_schema:
  [
    {
      "name": "resource",
      "type": "options",
      "default": "profiles",
      "options": [
        {
          "name": "Profiles",
          "value": "profiles",
          "description": "Organize your social media accounts into profiles for managing multiple brands, clients, or personal accounts separately"
        },
        {
          "name": "Posts",
          "value": "posts",
          "description": "Create, schedule, and manage social media posts across multiple platforms with advanced features like threads, stories, and platform-specific settings"
        },
        {
          "name": "Media",
          "value": "media",
          "description": "Upload images and videos up to 5GB for use in your social media posts with automatic optimization"
        },
        {
          "name": "Social Accounts",
          "value": "accounts",
          "description": "Manage connected social media accounts, view their status, and disconnect accounts when needed"
        },
        {
          "name": "Connect Platform",
          "value": "connect",
          "description": "Initiate OAuth flows to connect new social media platforms (Twitter/X, Instagram, Facebook, LinkedIn, TikTok, YouTube, Threads)"
        },
        {
          "name": "Usage Statistics",
          "value": "usage",
          "description": "Monitor your current usage against plan limits including uploads, profiles, and billing information"
        },
        {
          "name": "Facebook Management",
          "value": "facebook",
          "description": "Manage Facebook pages, select which page to post to, and handle Facebook-specific settings"
        },
        {
          "name": "LinkedIn Management",
          "value": "linkedin",
          "description": "Switch between personal and company posting, manage LinkedIn organization settings"
        },
        {
          "name": "Clone Connection",
          "value": "clone",
          "description": "Reuse OAuth connections across multiple profiles while targeting different pages or organizations"
        },
        {
          "name": "Webhooks",
          "value": "webhooks",
          "description": "Configure webhook notifications for post events, account changes, and messages"
        },
        {
          "name": "Queue",
          "value": "queue",
          "description": "Manage queue slots for automated posting schedules across your accounts"
        },
        {
          "name": "Account Groups",
          "value": "accountGroups",
          "description": "Create and manage groups of accounts for bulk operations and organized posting"
        },
        {
          "name": "Analytics",
          "value": "analytics",
          "description": "View post performance analytics and engagement metrics across platforms"
        },
        {
          "name": "Bluesky Management",
          "value": "bluesky",
          "description": "Connect and manage Bluesky accounts using app passwords"
        },
        {
          "name": "Pinterest Management",
          "value": "pinterest",
          "description": "Manage Pinterest boards and select which board to post to"
        },
        {
          "name": "Reddit Management",
          "value": "reddit",
          "description": "Manage saved subreddits and search for Reddit communities"
        },
        {
          "name": "Telegram Management",
          "value": "telegram",
          "description": "Connect and manage Telegram channels for posting"
        },
        {
          "name": "Google Business Management",
          "value": "googlebusiness",
          "description": "Manage Google Business locations and respond to reviews"
        },
        {
          "name": "Snapchat Management",
          "value": "snapchat",
          "description": "Connect and manage Snapchat profiles for posting"
        },
        {
          "name": "Invites",
          "value": "invites",
          "description": "Create invite tokens to grant team members access to profiles"
        },
        {
          "name": "Logs",
          "value": "logs",
          "description": "View publishing logs with detailed information about each publishing attempt"
        },
        {
          "name": "API Keys",
          "value": "apiKeys",
          "description": "Manage API keys for programmatic access to the Late API"
        },
        {
          "name": "Users",
          "value": "users",
          "description": "View users and team members with access to your account"
        },
        {
          "name": "Tools",
          "value": "tools",
          "description": "Manage tools"
        }
      ],
      "displayName": "Resource",
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List",
          "value": "list",
          "action": "List profiles",
          "routing": {
            "request": {
              "qs": {
                "includeOverLimit": "={{ $parameter.includeOverLimit || false }}"
              },
              "url": "/profiles",
              "method": "GET"
            }
          }
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get profile",
          "routing": {
            "request": {
              "url": "=/profiles/{{ $parameter.profileId }}",
              "method": "GET"
            }
          }
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create profile",
          "routing": {
            "request": {
              "url": "/profiles",
              "body": {
                "name": "={{ $parameter.name }}",
                "color": "={{ $parameter.color || '' }}",
                "description": "={{ $parameter.description || '' }}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update profile",
          "routing": {
            "request": {
              "url": "=/profiles/{{ $parameter.profileId }}",
              "body": {
                "name": "={{ $parameter.name || undefined }}",
                "color": "={{ $parameter.color || undefined }}",
                "isDefault": "={{ $parameter.isDefault ?? undefined }}",
                "description": "={{ $parameter.description || undefined }}"
              },
              "method": "PUT"
            }
          }
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete profile",
          "routing": {
            "request": {
              "url": "=/profiles/{{ $parameter.profileId }}",
              "method": "DELETE"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "profiles"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List",
          "value": "list",
          "action": "List posts",
          "routing": {
            "request": {
              "qs": {
                "page": "={{ $parameter.page || 1 }}",
                "limit": "={{ $parameter.limit || 10 }}",
                "dateTo": "={{ $parameter.dateTo || undefined }}",
                "search": "={{ $parameter.search || undefined }}",
                "sortBy": "={{ $parameter.sortBy || undefined }}",
                "status": "={{ $parameter.status || undefined }}",
                "dateFrom": "={{ $parameter.dateFrom || undefined }}",
                "platform": "={{ $parameter.platform || undefined }}",
                "createdBy": "={{ $parameter.createdBy || undefined }}",
                "profileId": "={{ $parameter.profileId || undefined }}",
                "includeHidden": "={{ $parameter.includeHidden ?? undefined }}"
              },
              "url": "/posts",
              "method": "GET"
            }
          }
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get post",
          "routing": {
            "request": {
              "url": "=/posts/{{ $parameter.postId }}",
              "method": "GET"
            }
          }
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create post",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "url": "/posts",
              "method": "POST",
              "returnFullResponse": true,
              "ignoreHttpStatusErrors": true
            }
          }
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update post",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "url": "=/posts/{{ $parameter.postId }}",
              "method": "PUT",
              "returnFullResponse": true,
              "ignoreHttpStatusErrors": true
            }
          }
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete post",
          "routing": {
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "url": "=/posts/{{ $parameter.postId }}",
              "method": "DELETE",
              "returnFullResponse": true,
              "ignoreHttpStatusErrors": true
            }
          }
        },
        {
          "name": "Retry",
          "value": "retry",
          "action": "Retry failed post",
          "routing": {
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "url": "=/posts/{{ $parameter.postId }}/retry",
              "method": "POST",
              "returnFullResponse": true,
              "ignoreHttpStatusErrors": true
            }
          }
        },
        {
          "name": "Unpublish",
          "value": "unpublish",
          "action": "Unpublish post",
          "routing": {
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "url": "=/posts/{{ $parameter.postId }}/unpublish",
              "body": {
                "platform": "={{ $parameter.unpublishPlatform }}"
              },
              "method": "POST",
              "returnFullResponse": true,
              "ignoreHttpStatusErrors": true
            }
          }
        },
        {
          "name": "Bulk Upload",
          "value": "bulkUpload",
          "action": "Bulk upload posts from CSV",
          "routing": {
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "qs": {
                "dryRun": "={{ $parameter.dryRun || false }}"
              },
              "url": "/posts/bulk-upload",
              "body": {
                "file": "={{ { value: $parameter.csvFile, options: { filename: 'bulk-upload.csv', contentType: 'text/csv' } } }}"
              },
              "method": "POST",
              "headers": {
                "Content-Type": "multipart/form-data"
              },
              "returnFullResponse": true,
              "ignoreHttpStatusErrors": true
            }
          }
        },
        {
          "name": "Get Logs",
          "value": "logs",
          "action": "Get post publishing logs",
          "routing": {
            "request": {
              "url": "=/posts/{{ $parameter.postId }}/logs",
              "method": "GET"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "posts"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "upload",
      "options": [
        {
          "name": "Upload",
          "value": "upload",
          "action": "Upload media",
          "routing": {
            "send": {
              "preSend": [
                null
              ]
            },
            "output": {
              "postReceive": [
                null
              ]
            },
            "request": {
              "url": "/media",
              "method": "POST",
              "headers": {
                "Content-Type": "multipart/form-data"
              },
              "returnFullResponse": true,
              "ignoreHttpStatusErrors": true
            }
          }
        },
        {
          "name": "Get Presigned URL",
          "value": "presign",
          "action": "Get presigned URL for direct upload",
          "routing": {
            "request": {
              "url": "/media/presign",
              "body": {
                "size": "={{ $parameter.size }}",
                "filename": "={{ $parameter.filename }}",
                "contentType": "={{ $parameter.contentType }}"
              },
              "method": "POST"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "media"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List",
          "value": "list",
          "action": "List social accounts",
          "routing": {
            "request": {
              "qs": {
                "profileId": "={{ $parameter.profileId || undefined }}"
              },
              "url": "/accounts",
              "method": "GET"
            }
          }
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get account details",
          "routing": {
            "request": {
              "url": "=/accounts/{{ $parameter.accountId }}",
              "method": "GET"
            }
          }
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update account",
          "routing": {
            "request": {
              "url": "=/accounts/{{ $parameter.accountId }}",
              "body": {
                "isActive": "={{ $parameter.isActive }}",
                "displayName": "={{ $parameter.displayName || undefined }}"
              },
              "method": "PUT"
            }
          }
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Disconnect account",
          "routing": {
            "request": {
              "url": "=/accounts/{{ $parameter.accountId }}",
              "method": "DELETE"
            }
          }
        },
        {
          "name": "Get Health",
          "value": "health",
          "action": "Check account health",
          "routing": {
            "request": {
              "url": "=/accounts/{{ $parameter.accountId }}/health",
              "method": "GET"
            }
          }
        },
        {
          "name": "Get All Health",
          "value": "allHealth",
          "action": "Check all accounts health",
          "routing": {
            "request": {
              "qs": {
                "profileId": "={{ $parameter.profileId || undefined }}"
              },
              "url": "/accounts/health",
              "method": "GET"
            }
          }
        },
        {
          "name": "Get Follower Stats",
          "value": "followerStats",
          "action": "Get follower statistics",
          "routing": {
            "request": {
              "qs": {
                "accountId": "={{ $parameter.accountId || undefined }}",
                "profileId": "={{ $parameter.profileId || undefined }}"
              },
              "url": "/accounts/follower-stats",
              "method": "GET"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "accounts"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getConnectUrl",
      "options": [
        {
          "name": "Get Connect URL",
          "value": "getConnectUrl",
          "action": "Get OAuth connect URL",
          "routing": {
            "request": {
              "qs": {
                "headless": "={{ $parameter.headless || undefined }}",
                "profileId": "={{ $parameter.profileId }}",
                "redirect_url": "={{ $parameter.redirectUrl || undefined }}"
              },
              "url": "=/connect/{{ $parameter.platform }}",
              "method": "GET"
            }
          }
        },
        {
          "name": "Complete OAuth Callback",
          "value": "handleOAuthCallback",
          "action": "Complete OAuth callback",
          "routing": {
            "request": {
              "url": "=/connect/{{ $parameter.platform }}",
              "body": {
                "code": "={{ $parameter.code }}",
                "state": "={{ $parameter.state }}",
                "profileId": "={{ $parameter.profileId }}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "List Facebook Pages (Headless)",
          "value": "listFacebookPages",
          "action": "List Facebook pages",
          "routing": {
            "request": {
              "qs": {
                "profileId": "={{ $parameter.profileId }}",
                "tempToken": "={{ $parameter.tempToken }}"
              },
              "url": "/connect/facebook/select-page",
              "method": "GET"
            }
          }
        },
        {
          "name": "Select Facebook Page (Headless)",
          "value": "selectFacebookPage",
          "action": "Select Facebook page",
          "routing": {
            "request": {
              "url": "/connect/facebook/select-page",
              "body": {
                "pageId": "={{ $parameter.pageId }}",
                "profileId": "={{ $parameter.profileId }}",
                "tempToken": "={{ $parameter.tempToken }}",
                "userProfile": "={{ $parameter.userProfile || undefined }}",
                "redirect_url": "={{ $parameter.redirectUrl || undefined }}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "List Google Business Locations (Headless)",
          "value": "listGoogleBusinessLocations",
          "action": "List GBP locations",
          "routing": {
            "request": {
              "qs": {
                "profileId": "={{ $parameter.profileId }}",
                "tempToken": "={{ $parameter.tempToken }}"
              },
              "url": "/connect/googlebusiness/locations",
              "method": "GET"
            }
          }
        },
        {
          "name": "Select Google Business Location (Headless)",
          "value": "selectGoogleBusinessLocation",
          "action": "Select GBP location",
          "routing": {
            "request": {
              "url": "/connect/googlebusiness/select-location",
              "body": {
                "profileId": "={{ $parameter.profileId }}",
                "tempToken": "={{ $parameter.tempToken }}",
                "locationId": "={{ $parameter.locationId }}",
                "userProfile": "={{ $parameter.userProfile }}",
                "redirect_url": "={{ $parameter.redirectUrl || undefined }}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "Get Pending OAuth Data (Headless)",
          "value": "getPendingOAuthData",
          "action": "Get pending OAuth data",
          "routing": {
            "request": {
              "qs": {
                "token": "={{ $parameter.token }}"
              },
              "url": "/connect/pending-data",
              "method": "GET"
            }
          }
        },
        {
          "name": "List LinkedIn Organizations (Details)",
          "value": "listLinkedInOrganizations",
          "action": "List LinkedIn orgs",
          "routing": {
            "request": {
              "qs": {
                "orgIds": "={{ $parameter.orgIds }}",
                "tempToken": "={{ $parameter.tempToken }}"
              },
              "url": "/connect/linkedin/organizations",
              "method": "GET"
            }
          }
        },
        {
          "name": "Select LinkedIn Organization",
          "value": "selectLinkedInOrganization",
          "action": "Select LinkedIn org",
          "routing": {
            "request": {
              "url": "/connect/linkedin/select-organization",
              "body": {
                "profileId": "={{ $parameter.profileId }}",
                "tempToken": "={{ $parameter.tempToken }}",
                "accountType": "={{ $parameter.accountType }}",
                "userProfile": "={{ $parameter.userProfile }}",
                "redirect_url": "={{ $parameter.redirectUrl || undefined }}",
                "selectedOrganization": "={{ $parameter.selectedOrganization || undefined }}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "List Pinterest Boards (Headless)",
          "value": "listPinterestBoardsForSelection",
          "action": "List Pinterest boards",
          "routing": {
            "request": {
              "qs": {
                "profileId": "={{ $parameter.profileId }}",
                "tempToken": "={{ $parameter.tempToken }}"
              },
              "url": "/connect/pinterest/select-board",
              "method": "GET",
              "headers": {
                "X-Connect-Token": "={{ $parameter.xConnectToken || undefined }}"
              }
            }
          }
        },
        {
          "name": "Select Pinterest Board (Headless)",
          "value": "selectPinterestBoard",
          "action": "Select Pinterest board",
          "routing": {
            "request": {
              "url": "/connect/pinterest/select-board",
              "body": {
                "boardId": "={{ $parameter.boardId }}",
                "boardName": "={{ $parameter.boardName || undefined }}",
                "expiresIn": "={{ $parameter.expiresIn || undefined }}",
                "profileId": "={{ $parameter.profileId }}",
                "tempToken": "={{ $parameter.tempToken }}",
                "userProfile": "={{ $parameter.userProfile || undefined }}",
                "redirect_url": "={{ $parameter.redirectUrl || undefined }}",
                "refreshToken": "={{ $parameter.refreshToken || undefined }}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "List Snapchat Profiles (Headless)",
          "value": "listSnapchatProfiles",
          "action": "List Snapchat profiles",
          "routing": {
            "request": {
              "qs": {
                "profileId": "={{ $parameter.profileId }}",
                "tempToken": "={{ $parameter.tempToken }}"
              },
              "url": "/connect/snapchat/select-profile",
              "method": "GET",
              "headers": {
                "X-Connect-Token": "={{ $parameter.xConnectToken || undefined }}"
              }
            }
          }
        },
        {
          "name": "Select Snapchat Profile (Headless)",
          "value": "selectSnapchatProfile",
          "action": "Select Snapchat profile",
          "routing": {
            "request": {
              "url": "/connect/snapchat/select-profile",
              "body": {
                "expiresIn": "={{ $parameter.expiresIn || undefined }}",
                "profileId": "={{ $parameter.profileId }}",
                "tempToken": "={{ $parameter.tempToken }}",
                "userProfile": "={{ $parameter.userProfile }}",
                "redirect_url": "={{ $parameter.redirectUrl || undefined }}",
                "refreshToken": "={{ $parameter.refreshToken || undefined }}",
                "selectedPublicProfile": "={{ $parameter.selectedPublicProfile }}"
              },
              "method": "POST",
              "headers": {
                "X-Connect-Token": "={{ $parameter.xConnectToken || undefined }}"
              }
            }
          }
        },
        {
          "name": "Connect Bluesky via Credentials",
          "value": "connectBlueskyCredentials",
          "action": "Connect Bluesky account",
          "routing": {
            "request": {
              "url": "/connect/bluesky/credentials",
              "body": {
                "state": "={{ $parameter.state }}",
                "identifier": "={{ $parameter.identifier }}",
                "appPassword": "={{ $parameter.appPassword }}",
                "redirectUri": "={{ $parameter.redirectUri || undefined }}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "Connect WhatsApp via Credentials",
          "value": "connectWhatsAppCredentials",
          "action": "Connect WhatsApp via credentials",
          "routing": {
            "request": {
              "url": "/connect/whatsapp/credentials",
              "body": {
                "wabaId": "={{ $parameter.wabaId }}",
                "profileId": "={{ $parameter.profileId }}",
                "accessToken": "={{ $parameter.accessToken }}",
                "phoneNumberId": "={{ $parameter.phoneNumberId }}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "Generate Telegram Code",
          "value": "getTelegramConnectStatus",
          "action": "Generate Telegram code",
          "routing": {
            "request": {
              "qs": {
                "profileId": "={{ $parameter.profileId }}"
              },
              "url": "/connect/telegram",
              "method": "GET"
            }
          }
        },
        {
          "name": "Connect Telegram Directly",
          "value": "initiateTelegramConnect",
          "action": "Connect Telegram directly",
          "routing": {
            "request": {
              "url": "/connect/telegram",
              "body": {
                "chatId": "={{ $parameter.chatId }}",
                "profileId": "={{ $parameter.profileId }}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "Check Telegram Status",
          "value": "completeTelegramConnect",
          "action": "Check Telegram status",
          "routing": {
            "request": {
              "qs": {
                "code": "={{ $parameter.code }}"
              },
              "url": "/connect/telegram",
              "method": "PATCH"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "connect"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getStats",
      "options": [
        {
          "name": "Get Stats",
          "value": "getStats",
          "action": "Get usage statistics",
          "routing": {
            "request": {
              "url": "/usage-stats",
              "method": "GET"
            }
          }
        },
        {
          "name": "Get Usage Stats",
          "value": "getUsageStats",
          "action": "Get plan and usage stats",
          "routing": {
            "request": {
              "url": "/usage-stats",
              "method": "GET"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "usage"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listPages",
      "options": [
        {
          "name": "List Pages",
          "value": "listPages",
          "action": "List Facebook pages",
          "routing": {
            "request": {
              "qs": {
                "profileId": "={{ $parameter.profileId }}",
                "tempToken": "={{ $parameter.tempToken }}"
              },
              "url": "/connect/facebook/select-page",
              "method": "GET"
            }
          }
        },
        {
          "name": "Select Page",
          "value": "selectPage",
          "action": "Select Facebook page",
          "routing": {
            "request": {
              "url": "/connect/facebook/select-page",
              "body": {
                "pageId": "={{ $parameter.pageId }}",
                "profileId": "={{ $parameter.profileId }}",
                "tempToken": "={{ $parameter.tempToken }}",
                "userProfile": "={{ { id: $parameter.userProfileId || '', name: $parameter.userProfileName || '', email: $parameter.userProfileEmail || '', picture: $parameter.userProfilePicture || '', accessToken: $parameter.userProfileAccessToken || '' } }}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "List Account Pages",
          "value": "listAccountPages",
          "action": "List Facebook pages for account",
          "routing": {
            "request": {
              "url": "=/accounts/{{ $parameter.accountId }}/facebook-page",
              "method": "GET"
            }
          }
        },
        {
          "name": "Update Page",
          "value": "updatePage",
          "action": "Update Facebook page",
          "routing": {
            "request": {
              "url": "=/accounts/{{ $parameter.accountId }}/facebook-page",
              "body": {
                "selectedPageId": "={{ $parameter.selectedPageId }}"
              },
              "method": "PUT"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "facebook"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "updateOrganization",
      "options": [
        {
          "name": "Update Organization",
          "value": "updateOrganization",
          "action": "Update LinkedIn organization",
          "routing": {
            "request": {
              "url": "=/accounts/{{ $parameter.accountId }}/linkedin-organization",
              "body": {
                "accountType": "={{ $parameter.accountType }}",
                "selectedOrganization": "={{ { id: $parameter.organizationId || '', urn: $parameter.organizationUrn || '', name: $parameter.organizationName || '', logoUrl: $parameter.organizationLogoUrl || '', description: $parameter.organizationDescription || '' } }}"
              },
              "method": "PUT"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "linkedin"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "cloneConnection",
      "options": [
        {
          "name": "Clone Connection",
          "value": "cloneConnection",
          "action": "Clone connection to profile",
          "routing": {
            "request": {
              "url": "=/profiles/{{ $parameter.profileId }}/clone-connection",
              "body": {
                "targetPageId": "={{ $parameter.targetPageId || undefined }}",
                "targetPageName": "={{ $parameter.targetPageName || undefined }}",
                "sourceAccountId": "={{ $parameter.sourceAccountId }}",
                "targetAccountType": "={{ $parameter.targetAccountType || undefined }}",
                "targetOrganizationId": "={{ $parameter.targetOrganizationId || undefined }}",
                "targetOrganizationUrn": "={{ $parameter.targetOrganizationUrn || undefined }}",
                "targetPageAccessToken": "={{ $parameter.targetPageAccessToken || undefined }}",
                "targetOrganizationName": "={{ $parameter.targetOrganizationName || undefined }}"
              },
              "method": "POST"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "clone"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get Settings",
          "value": "get",
          "action": "Get webhook settings",
          "routing": {
            "request": {
              "url": "/webhooks/settings",
              "method": "GET"
            }
          }
        },
        {
          "name": "Create Settings",
          "value": "create",
          "action": "Create webhook settings",
          "routing": {
            "request": {
              "url": "/webhooks/settings",
              "body": {
                "url": "={{ $parameter.url }}",
                "name": "={{ $parameter.name || undefined }}",
                "events": "={{ $parameter.events || undefined }}",
                "secret": "={{ $parameter.secret || undefined }}",
                "isActive": "={{ $parameter.isActive }}",
                "customHeaders": "={{ $parameter.customHeaders || undefined }}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "Update Settings",
          "value": "update",
          "action": "Update webhook settings",
          "routing": {
            "request": {
              "url": "/webhooks/settings",
              "body": {
                "_id": "={{ $parameter.webhookId }}",
                "url": "={{ $parameter.url || undefined }}",
                "name": "={{ $parameter.name || undefined }}",
                "events": "={{ $parameter.events || undefined }}",
                "secret": "={{ $parameter.secret || undefined }}",
                "isActive": "={{ $parameter.isActive }}",
                "customHeaders": "={{ $parameter.customHeaders || undefined }}"
              },
              "method": "PUT"
            }
          }
        },
        {
          "name": "Delete Settings",
          "value": "delete",
          "action": "Delete webhook settings",
          "routing": {
            "request": {
              "qs": {
                "id": "={{ $parameter.webhookId }}"
              },
              "url": "/webhooks/settings",
              "method": "DELETE"
            }
          }
        },
        {
          "name": "Test Webhook",
          "value": "test",
          "action": "Send test webhook",
          "routing": {
            "request": {
              "url": "/webhooks/test",
              "body": {
                "webhookId": "={{ $parameter.webhookId }}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "Get Logs",
          "value": "logs",
          "action": "Get webhook delivery logs",
          "routing": {
            "request": {
              "qs": {
                "event": "={{ $parameter.event || undefined }}",
                "limit": "={{ $parameter.limit || 50 }}",
                "status": "={{ $parameter.status || undefined }}",
                "webhookId": "={{ $parameter.webhookId || undefined }}"
              },
              "url": "/webhooks/logs",
              "method": "GET"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "webhooks"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List Slots",
          "value": "list",
          "action": "List queue slots",
          "routing": {
            "request": {
              "qs": {
                "all": "={{ $parameter.all ? 'true' : undefined }}",
                "queueId": "={{ $parameter.queueId || undefined }}",
                "profileId": "={{ $parameter.profileId }}"
              },
              "url": "/queue/slots",
              "method": "GET"
            }
          }
        },
        {
          "name": "Create Slot",
          "value": "create",
          "action": "Create queue slot",
          "routing": {
            "request": {
              "url": "/queue/slots",
              "body": {
                "name": "={{ $parameter.name }}",
                "slots": "={{ $parameter.slots }}",
                "active": "={{ $parameter.active }}",
                "timezone": "={{ $parameter.timezone }}",
                "profileId": "={{ $parameter.profileId }}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "Update Slot",
          "value": "update",
          "action": "Update queue slot",
          "routing": {
            "request": {
              "url": "/queue/slots",
              "body": {
                "name": "={{ $parameter.name || undefined }}",
                "slots": "={{ $parameter.slots }}",
                "active": "={{ $parameter.active }}",
                "queueId": "={{ $parameter.queueId || undefined }}",
                "timezone": "={{ $parameter.timezone }}",
                "profileId": "={{ $parameter.profileId }}",
                "setAsDefault": "={{ $parameter.setAsDefault }}",
                "reshuffleExisting": "={{ $parameter.reshuffleExisting }}"
              },
              "method": "PUT"
            }
          }
        },
        {
          "name": "Delete Slot",
          "value": "delete",
          "action": "Delete queue slot",
          "routing": {
            "request": {
              "qs": {
                "queueId": "={{ $parameter.queueId }}",
                "profileId": "={{ $parameter.profileId }}"
              },
              "url": "/queue/slots",
              "method": "DELETE"
            }
          }
        },
        {
          "name": "Preview Queue",
          "value": "preview",
          "action": "Preview upcoming queue posts",
          "routing": {
            "request": {
              "qs": {
                "count": "={{ $parameter.count || 20 }}",
                "queueId": "={{ $parameter.queueId || undefined }}",
                "profileId": "={{ $parameter.profileId }}"
              },
              "url": "/queue/preview",
              "method": "GET"
            }
          }
        },
        {
          "name": "Get Next Slot",
          "value": "nextSlot",
          "action": "Get next available queue slot",
          "routing": {
            "request": {
              "qs": {
                "queueId": "={{ $parameter.queueId || undefined }}",
                "profileId": "={{ $parameter.profileId }}"
              },
              "url": "/queue/next-slot",
              "method": "GET"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "queue"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List",
          "value": "list",
          "action": "List account groups",
          "routing": {
            "request": {
              "url": "/account-groups",
              "method": "GET"
            }
          }
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create account group",
          "routing": {
            "request": {
              "url": "/account-groups",
              "body": {
                "name": "={{ $parameter.name }}",
                "accountIds": "={{ $parameter.accountIds.split(',').map(s => s.trim()).filter(s => s) }}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "Update",
          "value": "update",
          "action": "Update account group",
          "routing": {
            "request": {
              "url": "=/account-groups/{{ $parameter.groupId }}",
              "body": {
                "name": "={{ $parameter.name || undefined }}",
                "accountIds": "={{ $parameter.accountIds ? $parameter.accountIds.split(',').map(s => s.trim()).filter(s => s) : undefined }}"
              },
              "method": "PUT"
            }
          }
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete account group",
          "routing": {
            "request": {
              "url": "=/account-groups/{{ $parameter.groupId }}",
              "method": "DELETE"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "accountGroups"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "get",
      "options": [
        {
          "name": "Get Analytics",
          "value": "get",
          "action": "Get post analytics",
          "routing": {
            "request": {
              "qs": {
                "page": "={{ $parameter.page || undefined }}",
                "limit": "={{ $parameter.limit || undefined }}",
                "order": "={{ $parameter.order || undefined }}",
                "postId": "={{ $parameter.postId || undefined }}",
                "sortBy": "={{ $parameter.sortBy || undefined }}",
                "source": "={{ $parameter.source || undefined }}",
                "toDate": "={{ $parameter.toDate || undefined }}",
                "fromDate": "={{ $parameter.fromDate || undefined }}",
                "platform": "={{ $parameter.platform || undefined }}",
                "accountId": "={{ $parameter.accountId || undefined }}",
                "profileId": "={{ $parameter.profileId || undefined }}"
              },
              "url": "/analytics",
              "method": "GET"
            }
          }
        },
        {
          "name": "YouTube Daily Views",
          "value": "youtubeDailyViews",
          "action": "Get YouTube daily views",
          "routing": {
            "request": {
              "qs": {
                "endDate": "={{ $parameter.endDate || undefined }}",
                "videoId": "={{ $parameter.videoId }}",
                "accountId": "={{ $parameter.accountId }}",
                "startDate": "={{ $parameter.startDate || undefined }}"
              },
              "url": "/analytics/youtube/daily-views",
              "method": "GET"
            }
          }
        },
        {
          "name": "Instagram Account Insights",
          "value": "instagramAccountInsights",
          "action": "Get Instagram account-level insights",
          "routing": {
            "request": {
              "qs": {
                "since": "={{ $parameter.since || undefined }}",
                "until": "={{ $parameter.until || undefined }}",
                "metrics": "={{ $parameter.metrics || undefined }}",
                "accountId": "={{ $parameter.accountId }}",
                "breakdown": "={{ $parameter.breakdown || undefined }}",
                "metricType": "={{ $parameter.metricType || undefined }}"
              },
              "url": "/analytics/instagram/account-insights",
              "method": "GET"
            }
          }
        },
        {
          "name": "Instagram Demographics",
          "value": "instagramDemographics",
          "action": "Get Instagram audience demographics",
          "routing": {
            "request": {
              "qs": {
                "metric": "={{ $parameter.metric || undefined }}",
                "accountId": "={{ $parameter.accountId }}",
                "breakdown": "={{ $parameter.breakdown || undefined }}",
                "timeframe": "={{ $parameter.timeframe || undefined }}"
              },
              "url": "/analytics/instagram/demographics",
              "method": "GET"
            }
          }
        },
        {
          "name": "Daily Metrics",
          "value": "dailyMetrics",
          "action": "Get daily aggregated metrics",
          "routing": {
            "request": {
              "qs": {
                "source": "={{ $parameter.source || undefined }}",
                "toDate": "={{ $parameter.toDateTime || undefined }}",
                "fromDate": "={{ $parameter.fromDateTime || undefined }}",
                "platform": "={{ $parameter.platform || undefined }}",
                "accountId": "={{ $parameter.accountId || undefined }}",
                "profileId": "={{ $parameter.profileId || undefined }}"
              },
              "url": "/analytics/daily-metrics",
              "method": "GET"
            }
          }
        },
        {
          "name": "Best Time to Post",
          "value": "bestTime",
          "action": "Get best times to post",
          "routing": {
            "request": {
              "qs": {
                "source": "={{ $parameter.source || undefined }}",
                "platform": "={{ $parameter.platform || undefined }}",
                "profileId": "={{ $parameter.profileId || undefined }}"
              },
              "url": "/analytics/best-time",
              "method": "GET"
            }
          }
        },
        {
          "name": "Content Decay",
          "value": "contentDecay",
          "action": "Get content performance decay",
          "routing": {
            "request": {
              "qs": {
                "source": "={{ $parameter.source || undefined }}",
                "platform": "={{ $parameter.platform || undefined }}",
                "profileId": "={{ $parameter.profileId || undefined }}"
              },
              "url": "/analytics/content-decay",
              "method": "GET"
            }
          }
        },
        {
          "name": "Posting Frequency",
          "value": "postingFrequency",
          "action": "Get posting frequency vs engagement",
          "routing": {
            "request": {
              "qs": {
                "source": "={{ $parameter.source || undefined }}",
                "platform": "={{ $parameter.platform || undefined }}",
                "profileId": "={{ $parameter.profileId || undefined }}"
              },
              "url": "/analytics/posting-frequency",
              "method": "GET"
            }
          }
        },
        {
          "name": "Post Timeline",
          "value": "postTimeline",
          "action": "Get post analytics timeline",
          "routing": {
            "request": {
              "qs": {
                "postId": "={{ $parameter.postId }}",
                "toDate": "={{ $parameter.toDateTime || undefined }}",
                "fromDate": "={{ $parameter.fromDateTime || undefined }}"
              },
              "url": "/analytics/post-timeline",
              "method": "GET"
            }
          }
        },
        {
          "name": "Follower Stats",
          "value": "followerStats",
          "action": "Get follower stats",
          "routing": {
            "request": {
              "qs": {
                "toDate": "={{ $parameter.toDate || undefined }}",
                "fromDate": "={{ $parameter.fromDate || undefined }}",
                "profileId": "={{ $parameter.profileId || undefined }}",
                "accountIds": "={{ $parameter.accountIds || undefined }}",
                "granularity": "={{ $parameter.granularity || undefined }}"
              },
              "url": "/accounts/follower-stats",
              "method": "GET"
            }
          }
        },
        {
          "name": "LinkedIn Aggregate Analytics",
          "value": "linkedinAggregateAnalytics",
          "action": "Get LinkedIn aggregate stats",
          "routing": {
            "request": {
              "qs": {
                "endDate": "={{ $parameter.endDate || undefined }}",
                "metrics": "={{ $parameter.metrics || undefined }}",
                "startDate": "={{ $parameter.startDate || undefined }}",
                "aggregation": "={{ $parameter.aggregation || undefined }}"
              },
              "url": "=/accounts/{{ $parameter.accountIdPath }}/linkedin-aggregate-analytics",
              "method": "GET"
            }
          }
        },
        {
          "name": "LinkedIn Post Analytics",
          "value": "linkedinPostAnalytics",
          "action": "Get LinkedIn post stats",
          "routing": {
            "request": {
              "qs": {
                "urn": "={{ $parameter.urn }}"
              },
              "url": "=/accounts/{{ $parameter.accountIdPath }}/linkedin-post-analytics",
              "method": "GET"
            }
          }
        },
        {
          "name": "LinkedIn Post Reactions",
          "value": "linkedinPostReactions",
          "action": "Get LinkedIn post reactions",
          "routing": {
            "request": {
              "qs": {
                "urn": "={{ $parameter.urn }}",
                "limit": "={{ $parameter.limit || undefined }}",
                "cursor": "={{ $parameter.cursor || undefined }}"
              },
              "url": "=/accounts/{{ $parameter.accountIdPath }}/linkedin-post-reactions",
              "method": "GET"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "analytics"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "connect",
      "options": [
        {
          "name": "Connect with Credentials",
          "value": "connect",
          "action": "Connect Bluesky account with credentials",
          "routing": {
            "request": {
              "url": "/connect/bluesky/credentials",
              "body": {
                "handle": "={{ $parameter.handle }}",
                "profileId": "={{ $parameter.profileId }}",
                "appPassword": "={{ $parameter.appPassword }}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "Disconnect",
          "value": "disconnect",
          "action": "Disconnect Bluesky account",
          "routing": {
            "request": {
              "url": "=/accounts/{{ $parameter.accountId }}",
              "method": "DELETE"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "bluesky"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listBoards",
      "options": [
        {
          "name": "List Boards",
          "value": "listBoards",
          "action": "List Pinterest boards",
          "routing": {
            "request": {
              "url": "=/accounts/{{ $parameter.accountId }}/pinterest-boards",
              "method": "GET"
            }
          }
        },
        {
          "name": "Select Board",
          "value": "selectBoard",
          "action": "Select Pinterest board for posting",
          "routing": {
            "request": {
              "url": "=/accounts/{{ $parameter.accountId }}/pinterest-boards",
              "body": {
                "boardId": "={{ $parameter.boardId }}"
              },
              "method": "PUT"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "pinterest"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listSubreddits",
      "options": [
        {
          "name": "List Subreddits",
          "value": "listSubreddits",
          "action": "List saved subreddits",
          "routing": {
            "request": {
              "url": "=/accounts/{{ $parameter.accountId }}/reddit-subreddits",
              "method": "GET"
            }
          }
        },
        {
          "name": "Update Subreddits",
          "value": "updateSubreddits",
          "action": "Update saved subreddits",
          "routing": {
            "request": {
              "url": "=/accounts/{{ $parameter.accountId }}/reddit-subreddits",
              "body": {
                "subredditIds": "={{ $parameter.subredditIds.split(',').map(s => s.trim()).filter(s => s) }}"
              },
              "method": "PUT"
            }
          }
        },
        {
          "name": "Search Posts",
          "value": "searchReddit",
          "action": "Search Reddit posts",
          "routing": {
            "request": {
              "qs": {
                "q": "={{ $parameter.q }}",
                "sort": "={{ $parameter.sort || 'new' }}",
                "after": "={{ $parameter.after || undefined }}",
                "limit": "={{ $parameter.limit || 25 }}",
                "accountId": "={{ $parameter.accountId }}",
                "subreddit": "={{ $parameter.subreddit || undefined }}",
                "restrict_sr": "={{ $parameter.restrict_sr || undefined }}"
              },
              "url": "/reddit/search",
              "method": "GET"
            }
          }
        },
        {
          "name": "Get Feed",
          "value": "feed",
          "action": "Get subreddit feed",
          "routing": {
            "request": {
              "qs": {
                "t": "={{ $parameter.t || undefined }}",
                "sort": "={{ $parameter.sort || 'hot' }}",
                "after": "={{ $parameter.after || undefined }}",
                "limit": "={{ $parameter.limit || 25 }}",
                "accountId": "={{ $parameter.accountId }}",
                "subreddit": "={{ $parameter.subreddit || undefined }}"
              },
              "url": "/reddit/feed",
              "method": "GET"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "reddit"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "getStatus",
      "options": [
        {
          "name": "Get Status",
          "value": "getStatus",
          "action": "Get Telegram connection status",
          "routing": {
            "request": {
              "url": "/connect/telegram",
              "method": "GET"
            }
          }
        },
        {
          "name": "Initiate Connection",
          "value": "initiate",
          "action": "Start Telegram connection flow",
          "routing": {
            "request": {
              "url": "/connect/telegram",
              "body": {
                "profileId": "={{ $parameter.profileId }}"
              },
              "method": "POST"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "telegram"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listLocations",
      "options": [
        {
          "name": "List Locations",
          "value": "listLocations",
          "action": "List Google Business locations",
          "routing": {
            "request": {
              "qs": {
                "tempToken": "={{ $parameter.tempToken }}"
              },
              "url": "/connect/googlebusiness/locations",
              "method": "GET"
            }
          }
        },
        {
          "name": "Select Location",
          "value": "selectLocation",
          "action": "Select Google Business location",
          "routing": {
            "request": {
              "url": "/connect/googlebusiness/select-location",
              "body": {
                "tempToken": "={{ $parameter.tempToken }}",
                "locationId": "={{ $parameter.locationId }}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "List Account Locations",
          "value": "listAccountLocations",
          "action": "List GBP locations for account",
          "routing": {
            "request": {
              "url": "=/accounts/{{ $parameter.accountId }}/gmb-locations",
              "method": "GET"
            }
          }
        },
        {
          "name": "Switch Location",
          "value": "switchLocation",
          "action": "Switch GBP location for account",
          "routing": {
            "request": {
              "url": "=/accounts/{{ $parameter.accountId }}/gmb-locations",
              "body": {
                "locationId": "={{ $parameter.newLocationId }}"
              },
              "method": "PUT"
            }
          }
        },
        {
          "name": "List Reviews",
          "value": "listReviews",
          "action": "List Google Business reviews",
          "routing": {
            "request": {
              "qs": {
                "page": "={{ $parameter.page || 1 }}",
                "limit": "={{ $parameter.limit || 20 }}"
              },
              "url": "=/accounts/{{ $parameter.accountId }}/gmb-reviews",
              "method": "GET"
            }
          }
        },
        {
          "name": "Reply to Review",
          "value": "replyReview",
          "action": "Reply to a Google Business review",
          "routing": {
            "request": {
              "url": "=/accounts/{{ $parameter.accountId }}/gmb-reviews/{{ $parameter.reviewId }}/reply",
              "body": {
                "comment": "={{ $parameter.comment }}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "Delete Review Reply",
          "value": "deleteReply",
          "action": "Delete a review reply",
          "routing": {
            "request": {
              "url": "=/accounts/{{ $parameter.accountId }}/gmb-reviews/{{ $parameter.reviewId }}/reply",
              "method": "DELETE"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "googlebusiness"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listProfiles",
      "options": [
        {
          "name": "List Profiles",
          "value": "listProfiles",
          "action": "List Snapchat profiles",
          "routing": {
            "request": {
              "qs": {
                "tempToken": "={{ $parameter.tempToken }}"
              },
              "url": "/connect/snapchat/select-profile",
              "method": "GET"
            }
          }
        },
        {
          "name": "Select Profile",
          "value": "selectProfile",
          "action": "Select Snapchat profile",
          "routing": {
            "request": {
              "url": "/connect/snapchat/select-profile",
              "body": {
                "profileId": "={{ $parameter.snapchatProfileId }}",
                "tempToken": "={{ $parameter.tempToken }}"
              },
              "method": "POST"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "snapchat"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "create",
      "options": [
        {
          "name": "Create Token",
          "value": "create",
          "action": "Create invite token",
          "routing": {
            "request": {
              "url": "/invite/tokens",
              "body": {
                "scope": "={{ $parameter.scope }}",
                "profileIds": "={{ $parameter.scope === 'profiles' ? $parameter.profileIds.split(',').map(s => s.trim()).filter(s => s) : undefined }}"
              },
              "method": "POST"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "invites"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "listPostsLogs",
      "options": [
        {
          "name": "List Posts Logs",
          "value": "listPostsLogs",
          "action": "List publishing logs",
          "routing": {
            "request": {
              "qs": {
                "days": "={{ $parameter.days || 7 }}",
                "skip": "={{ $parameter.skip || 0 }}",
                "limit": "={{ $parameter.limit || 50 }}",
                "action": "={{ $parameter.action || undefined }}",
                "search": "={{ $parameter.search || undefined }}",
                "status": "={{ $parameter.status || undefined }}",
                "platform": "={{ $parameter.platform || undefined }}"
              },
              "url": "/posts/logs",
              "method": "GET"
            }
          }
        },
        {
          "name": "List Connection Logs",
          "value": "listConnectionLogs",
          "action": "List connection logs",
          "routing": {
            "request": {
              "qs": {
                "days": "={{ $parameter.days || 7 }}",
                "skip": "={{ $parameter.skip || 0 }}",
                "limit": "={{ $parameter.limit || 50 }}",
                "status": "={{ $parameter.connectionStatus || undefined }}",
                "platform": "={{ $parameter.platform || undefined }}",
                "eventType": "={{ $parameter.eventType || undefined }}"
              },
              "url": "/connections/logs",
              "method": "GET"
            }
          }
        },
        {
          "name": "Get Post Logs",
          "value": "getPostLogs",
          "action": "Get post logs",
          "routing": {
            "request": {
              "qs": {
                "limit": "={{ $parameter.limit || 50 }}"
              },
              "url": "=/posts/{{ $parameter.postId }}/logs",
              "method": "GET"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "logs"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List",
          "value": "list",
          "action": "List API keys",
          "routing": {
            "request": {
              "url": "/api-keys",
              "method": "GET"
            }
          }
        },
        {
          "name": "Create",
          "value": "create",
          "action": "Create API key",
          "routing": {
            "request": {
              "url": "/api-keys",
              "body": {
                "name": "={{ $parameter.name }}",
                "scope": "={{ $parameter.scope }}",
                "expiresIn": "={{ $parameter.expiresIn || undefined }}",
                "permission": "={{ $parameter.permission }}",
                "profileIds": "={{ $parameter.scope === 'profiles' ? $parameter.profileIds : undefined }}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "Delete",
          "value": "delete",
          "action": "Delete API key",
          "routing": {
            "request": {
              "url": "=/api-keys/{{ $parameter.keyId }}",
              "method": "DELETE"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "apiKeys"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "list",
      "options": [
        {
          "name": "List",
          "value": "list",
          "action": "List users",
          "routing": {
            "request": {
              "url": "/users",
              "method": "GET"
            }
          }
        },
        {
          "name": "Get",
          "value": "get",
          "action": "Get user",
          "routing": {
            "request": {
              "url": "=/users/{{ $parameter.userId }}",
              "method": "GET"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "users"
          ]
        }
      },
      "noDataExpression": true
    },
    {
      "name": "operation",
      "type": "options",
      "default": "youtubeDownload",
      "options": [
        {
          "name": "YouTube: Download",
          "value": "youtubeDownload",
          "action": "Download YouTube video",
          "routing": {
            "request": {
              "qs": {
                "url": "={{ $parameter.url }}",
                "action": "={{ $parameter.action }}",
                "format": "={{ $parameter.format }}",
                "quality": "={{ $parameter.quality }}",
                "formatId": "={{ $parameter.formatId }}"
              },
              "url": "/tools/youtube/download",
              "method": "GET"
            }
          }
        },
        {
          "name": "YouTube: Transcript",
          "value": "youtubeTranscript",
          "action": "Get YouTube transcript",
          "routing": {
            "request": {
              "qs": {
                "url": "={{ $parameter.url }}",
                "lang": "={{ $parameter.lang }}"
              },
              "url": "/tools/youtube/transcript",
              "method": "GET"
            }
          }
        },
        {
          "name": "Instagram: Download",
          "value": "instagramDownload",
          "action": "Download Instagram media",
          "routing": {
            "request": {
              "qs": {
                "url": "={{ $parameter.url }}"
              },
              "url": "/tools/instagram/download",
              "method": "GET"
            }
          }
        },
        {
          "name": "Instagram: Hashtag Checker",
          "value": "instagramHashtagChecker",
          "action": "Check IG hashtag bans",
          "routing": {
            "request": {
              "url": "/tools/instagram/hashtag-checker",
              "body": {
                "hashtags": "={{ $parameter.hashtags }}"
              },
              "method": "POST"
            }
          }
        },
        {
          "name": "TikTok: Download",
          "value": "tiktokDownload",
          "action": "Download TikTok video",
          "routing": {
            "request": {
              "qs": {
                "url": "={{ $parameter.url }}",
                "action": "={{ $parameter.action }}",
                "formatId": "={{ $parameter.formatId }}"
              },
              "url": "/tools/tiktok/download",
              "method": "GET"
            }
          }
        },
        {
          "name": "Twitter/X: Download",
          "value": "twitterDownload",
          "action": "Download Twitter/X media",
          "routing": {
            "request": {
              "qs": {
                "url": "={{ $parameter.url }}",
                "action": "={{ $parameter.action }}",
                "formatId": "={{ $parameter.formatId }}"
              },
              "url": "/tools/twitter/download",
              "method": "GET"
            }
          }
        },
        {
          "name": "Facebook: Download",
          "value": "facebookDownload",
          "action": "Download Facebook video",
          "routing": {
            "request": {
              "qs": {
                "url": "={{ $parameter.url }}"
              },
              "url": "/tools/facebook/download",
              "method": "GET"
            }
          }
        },
        {
          "name": "LinkedIn: Download",
          "value": "linkedinDownload",
          "action": "Download LinkedIn video",
          "routing": {
            "request": {
              "qs": {
                "url": "={{ $parameter.url }}"
              },
              "url": "/tools/linkedin/download",
              "method": "GET"
            }
          }
        },
        {
          "name": "Bluesky: Download",
          "value": "blueskyDownload",
          "action": "Download Bluesky media",
          "routing": {
            "request": {
              "qs": {
                "url": "={{ $parameter.url }}"
              },
              "url": "/tools/bluesky/download",
              "method": "GET"
            }
          }
        }
      ],
      "displayName": "Operation",
      "displayOptions": {
        "show": {
          "resource": [
            "tools"
          ]
        }
      },
      "noDataExpression": true
    }
  ]

operations:
  [
    {
      "name": "List",
      "value": "list",
      "action": "List profiles",
      "routing": {
        "request": {
          "qs": {
            "includeOverLimit": "={{ $parameter.includeOverLimit || false }}"
          },
          "url": "/profiles",
          "method": "GET"
        }
      },
      "resource": "profiles"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get profile",
      "routing": {
        "request": {
          "url": "=/profiles/{{ $parameter.profileId }}",
          "method": "GET"
        }
      },
      "resource": "profiles"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create profile",
      "routing": {
        "request": {
          "url": "/profiles",
          "body": {
            "name": "={{ $parameter.name }}",
            "color": "={{ $parameter.color || '' }}",
            "description": "={{ $parameter.description || '' }}"
          },
          "method": "POST"
        }
      },
      "resource": "profiles"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update profile",
      "routing": {
        "request": {
          "url": "=/profiles/{{ $parameter.profileId }}",
          "body": {
            "name": "={{ $parameter.name || undefined }}",
            "color": "={{ $parameter.color || undefined }}",
            "isDefault": "={{ $parameter.isDefault ?? undefined }}",
            "description": "={{ $parameter.description || undefined }}"
          },
          "method": "PUT"
        }
      },
      "resource": "profiles"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete profile",
      "routing": {
        "request": {
          "url": "=/profiles/{{ $parameter.profileId }}",
          "method": "DELETE"
        }
      },
      "resource": "profiles"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List posts",
      "routing": {
        "request": {
          "qs": {
            "page": "={{ $parameter.page || 1 }}",
            "limit": "={{ $parameter.limit || 10 }}",
            "dateTo": "={{ $parameter.dateTo || undefined }}",
            "search": "={{ $parameter.search || undefined }}",
            "sortBy": "={{ $parameter.sortBy || undefined }}",
            "status": "={{ $parameter.status || undefined }}",
            "dateFrom": "={{ $parameter.dateFrom || undefined }}",
            "platform": "={{ $parameter.platform || undefined }}",
            "createdBy": "={{ $parameter.createdBy || undefined }}",
            "profileId": "={{ $parameter.profileId || undefined }}",
            "includeHidden": "={{ $parameter.includeHidden ?? undefined }}"
          },
          "url": "/posts",
          "method": "GET"
        }
      },
      "resource": "posts"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get post",
      "routing": {
        "request": {
          "url": "=/posts/{{ $parameter.postId }}",
          "method": "GET"
        }
      },
      "resource": "posts"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create post",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "url": "/posts",
          "method": "POST",
          "returnFullResponse": true,
          "ignoreHttpStatusErrors": true
        }
      },
      "resource": "posts"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update post",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "url": "=/posts/{{ $parameter.postId }}",
          "method": "PUT",
          "returnFullResponse": true,
          "ignoreHttpStatusErrors": true
        }
      },
      "resource": "posts"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete post",
      "routing": {
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "url": "=/posts/{{ $parameter.postId }}",
          "method": "DELETE",
          "returnFullResponse": true,
          "ignoreHttpStatusErrors": true
        }
      },
      "resource": "posts"
    },
    {
      "name": "Retry",
      "value": "retry",
      "action": "Retry failed post",
      "routing": {
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "url": "=/posts/{{ $parameter.postId }}/retry",
          "method": "POST",
          "returnFullResponse": true,
          "ignoreHttpStatusErrors": true
        }
      },
      "resource": "posts"
    },
    {
      "name": "Unpublish",
      "value": "unpublish",
      "action": "Unpublish post",
      "routing": {
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "url": "=/posts/{{ $parameter.postId }}/unpublish",
          "body": {
            "platform": "={{ $parameter.unpublishPlatform }}"
          },
          "method": "POST",
          "returnFullResponse": true,
          "ignoreHttpStatusErrors": true
        }
      },
      "resource": "posts"
    },
    {
      "name": "Bulk Upload",
      "value": "bulkUpload",
      "action": "Bulk upload posts from CSV",
      "routing": {
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "qs": {
            "dryRun": "={{ $parameter.dryRun || false }}"
          },
          "url": "/posts/bulk-upload",
          "body": {
            "file": "={{ { value: $parameter.csvFile, options: { filename: 'bulk-upload.csv', contentType: 'text/csv' } } }}"
          },
          "method": "POST",
          "headers": {
            "Content-Type": "multipart/form-data"
          },
          "returnFullResponse": true,
          "ignoreHttpStatusErrors": true
        }
      },
      "resource": "posts"
    },
    {
      "name": "Get Logs",
      "value": "logs",
      "action": "Get post publishing logs",
      "routing": {
        "request": {
          "url": "=/posts/{{ $parameter.postId }}/logs",
          "method": "GET"
        }
      },
      "resource": "posts"
    },
    {
      "name": "Upload",
      "value": "upload",
      "action": "Upload media",
      "routing": {
        "send": {
          "preSend": [
            null
          ]
        },
        "output": {
          "postReceive": [
            null
          ]
        },
        "request": {
          "url": "/media",
          "method": "POST",
          "headers": {
            "Content-Type": "multipart/form-data"
          },
          "returnFullResponse": true,
          "ignoreHttpStatusErrors": true
        }
      },
      "resource": "media"
    },
    {
      "name": "Get Presigned URL",
      "value": "presign",
      "action": "Get presigned URL for direct upload",
      "routing": {
        "request": {
          "url": "/media/presign",
          "body": {
            "size": "={{ $parameter.size }}",
            "filename": "={{ $parameter.filename }}",
            "contentType": "={{ $parameter.contentType }}"
          },
          "method": "POST"
        }
      },
      "resource": "media"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List social accounts",
      "routing": {
        "request": {
          "qs": {
            "profileId": "={{ $parameter.profileId || undefined }}"
          },
          "url": "/accounts",
          "method": "GET"
        }
      },
      "resource": "accounts"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get account details",
      "routing": {
        "request": {
          "url": "=/accounts/{{ $parameter.accountId }}",
          "method": "GET"
        }
      },
      "resource": "accounts"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update account",
      "routing": {
        "request": {
          "url": "=/accounts/{{ $parameter.accountId }}",
          "body": {
            "isActive": "={{ $parameter.isActive }}",
            "displayName": "={{ $parameter.displayName || undefined }}"
          },
          "method": "PUT"
        }
      },
      "resource": "accounts"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Disconnect account",
      "routing": {
        "request": {
          "url": "=/accounts/{{ $parameter.accountId }}",
          "method": "DELETE"
        }
      },
      "resource": "accounts"
    },
    {
      "name": "Get Health",
      "value": "health",
      "action": "Check account health",
      "routing": {
        "request": {
          "url": "=/accounts/{{ $parameter.accountId }}/health",
          "method": "GET"
        }
      },
      "resource": "accounts"
    },
    {
      "name": "Get All Health",
      "value": "allHealth",
      "action": "Check all accounts health",
      "routing": {
        "request": {
          "qs": {
            "profileId": "={{ $parameter.profileId || undefined }}"
          },
          "url": "/accounts/health",
          "method": "GET"
        }
      },
      "resource": "accounts"
    },
    {
      "name": "Get Follower Stats",
      "value": "followerStats",
      "action": "Get follower statistics",
      "routing": {
        "request": {
          "qs": {
            "accountId": "={{ $parameter.accountId || undefined }}",
            "profileId": "={{ $parameter.profileId || undefined }}"
          },
          "url": "/accounts/follower-stats",
          "method": "GET"
        }
      },
      "resource": "accounts"
    },
    {
      "name": "Get Connect URL",
      "value": "getConnectUrl",
      "action": "Get OAuth connect URL",
      "routing": {
        "request": {
          "qs": {
            "headless": "={{ $parameter.headless || undefined }}",
            "profileId": "={{ $parameter.profileId }}",
            "redirect_url": "={{ $parameter.redirectUrl || undefined }}"
          },
          "url": "=/connect/{{ $parameter.platform }}",
          "method": "GET"
        }
      },
      "resource": "connect"
    },
    {
      "name": "Complete OAuth Callback",
      "value": "handleOAuthCallback",
      "action": "Complete OAuth callback",
      "routing": {
        "request": {
          "url": "=/connect/{{ $parameter.platform }}",
          "body": {
            "code": "={{ $parameter.code }}",
            "state": "={{ $parameter.state }}",
            "profileId": "={{ $parameter.profileId }}"
          },
          "method": "POST"
        }
      },
      "resource": "connect"
    },
    {
      "name": "List Facebook Pages (Headless)",
      "value": "listFacebookPages",
      "action": "List Facebook pages",
      "routing": {
        "request": {
          "qs": {
            "profileId": "={{ $parameter.profileId }}",
            "tempToken": "={{ $parameter.tempToken }}"
          },
          "url": "/connect/facebook/select-page",
          "method": "GET"
        }
      },
      "resource": "connect"
    },
    {
      "name": "Select Facebook Page (Headless)",
      "value": "selectFacebookPage",
      "action": "Select Facebook page",
      "routing": {
        "request": {
          "url": "/connect/facebook/select-page",
          "body": {
            "pageId": "={{ $parameter.pageId }}",
            "profileId": "={{ $parameter.profileId }}",
            "tempToken": "={{ $parameter.tempToken }}",
            "userProfile": "={{ $parameter.userProfile || undefined }}",
            "redirect_url": "={{ $parameter.redirectUrl || undefined }}"
          },
          "method": "POST"
        }
      },
      "resource": "connect"
    },
    {
      "name": "List Google Business Locations (Headless)",
      "value": "listGoogleBusinessLocations",
      "action": "List GBP locations",
      "routing": {
        "request": {
          "qs": {
            "profileId": "={{ $parameter.profileId }}",
            "tempToken": "={{ $parameter.tempToken }}"
          },
          "url": "/connect/googlebusiness/locations",
          "method": "GET"
        }
      },
      "resource": "connect"
    },
    {
      "name": "Select Google Business Location (Headless)",
      "value": "selectGoogleBusinessLocation",
      "action": "Select GBP location",
      "routing": {
        "request": {
          "url": "/connect/googlebusiness/select-location",
          "body": {
            "profileId": "={{ $parameter.profileId }}",
            "tempToken": "={{ $parameter.tempToken }}",
            "locationId": "={{ $parameter.locationId }}",
            "userProfile": "={{ $parameter.userProfile }}",
            "redirect_url": "={{ $parameter.redirectUrl || undefined }}"
          },
          "method": "POST"
        }
      },
      "resource": "connect"
    },
    {
      "name": "Get Pending OAuth Data (Headless)",
      "value": "getPendingOAuthData",
      "action": "Get pending OAuth data",
      "routing": {
        "request": {
          "qs": {
            "token": "={{ $parameter.token }}"
          },
          "url": "/connect/pending-data",
          "method": "GET"
        }
      },
      "resource": "connect"
    },
    {
      "name": "List LinkedIn Organizations (Details)",
      "value": "listLinkedInOrganizations",
      "action": "List LinkedIn orgs",
      "routing": {
        "request": {
          "qs": {
            "orgIds": "={{ $parameter.orgIds }}",
            "tempToken": "={{ $parameter.tempToken }}"
          },
          "url": "/connect/linkedin/organizations",
          "method": "GET"
        }
      },
      "resource": "connect"
    },
    {
      "name": "Select LinkedIn Organization",
      "value": "selectLinkedInOrganization",
      "action": "Select LinkedIn org",
      "routing": {
        "request": {
          "url": "/connect/linkedin/select-organization",
          "body": {
            "profileId": "={{ $parameter.profileId }}",
            "tempToken": "={{ $parameter.tempToken }}",
            "accountType": "={{ $parameter.accountType }}",
            "userProfile": "={{ $parameter.userProfile }}",
            "redirect_url": "={{ $parameter.redirectUrl || undefined }}",
            "selectedOrganization": "={{ $parameter.selectedOrganization || undefined }}"
          },
          "method": "POST"
        }
      },
      "resource": "connect"
    },
    {
      "name": "List Pinterest Boards (Headless)",
      "value": "listPinterestBoardsForSelection",
      "action": "List Pinterest boards",
      "routing": {
        "request": {
          "qs": {
            "profileId": "={{ $parameter.profileId }}",
            "tempToken": "={{ $parameter.tempToken }}"
          },
          "url": "/connect/pinterest/select-board",
          "method": "GET",
          "headers": {
            "X-Connect-Token": "={{ $parameter.xConnectToken || undefined }}"
          }
        }
      },
      "resource": "connect"
    },
    {
      "name": "Select Pinterest Board (Headless)",
      "value": "selectPinterestBoard",
      "action": "Select Pinterest board",
      "routing": {
        "request": {
          "url": "/connect/pinterest/select-board",
          "body": {
            "boardId": "={{ $parameter.boardId }}",
            "boardName": "={{ $parameter.boardName || undefined }}",
            "expiresIn": "={{ $parameter.expiresIn || undefined }}",
            "profileId": "={{ $parameter.profileId }}",
            "tempToken": "={{ $parameter.tempToken }}",
            "userProfile": "={{ $parameter.userProfile || undefined }}",
            "redirect_url": "={{ $parameter.redirectUrl || undefined }}",
            "refreshToken": "={{ $parameter.refreshToken || undefined }}"
          },
          "method": "POST"
        }
      },
      "resource": "connect"
    },
    {
      "name": "List Snapchat Profiles (Headless)",
      "value": "listSnapchatProfiles",
      "action": "List Snapchat profiles",
      "routing": {
        "request": {
          "qs": {
            "profileId": "={{ $parameter.profileId }}",
            "tempToken": "={{ $parameter.tempToken }}"
          },
          "url": "/connect/snapchat/select-profile",
          "method": "GET",
          "headers": {
            "X-Connect-Token": "={{ $parameter.xConnectToken || undefined }}"
          }
        }
      },
      "resource": "connect"
    },
    {
      "name": "Select Snapchat Profile (Headless)",
      "value": "selectSnapchatProfile",
      "action": "Select Snapchat profile",
      "routing": {
        "request": {
          "url": "/connect/snapchat/select-profile",
          "body": {
            "expiresIn": "={{ $parameter.expiresIn || undefined }}",
            "profileId": "={{ $parameter.profileId }}",
            "tempToken": "={{ $parameter.tempToken }}",
            "userProfile": "={{ $parameter.userProfile }}",
            "redirect_url": "={{ $parameter.redirectUrl || undefined }}",
            "refreshToken": "={{ $parameter.refreshToken || undefined }}",
            "selectedPublicProfile": "={{ $parameter.selectedPublicProfile }}"
          },
          "method": "POST",
          "headers": {
            "X-Connect-Token": "={{ $parameter.xConnectToken || undefined }}"
          }
        }
      },
      "resource": "connect"
    },
    {
      "name": "Connect Bluesky via Credentials",
      "value": "connectBlueskyCredentials",
      "action": "Connect Bluesky account",
      "routing": {
        "request": {
          "url": "/connect/bluesky/credentials",
          "body": {
            "state": "={{ $parameter.state }}",
            "identifier": "={{ $parameter.identifier }}",
            "appPassword": "={{ $parameter.appPassword }}",
            "redirectUri": "={{ $parameter.redirectUri || undefined }}"
          },
          "method": "POST"
        }
      },
      "resource": "connect"
    },
    {
      "name": "Connect WhatsApp via Credentials",
      "value": "connectWhatsAppCredentials",
      "action": "Connect WhatsApp via credentials",
      "routing": {
        "request": {
          "url": "/connect/whatsapp/credentials",
          "body": {
            "wabaId": "={{ $parameter.wabaId }}",
            "profileId": "={{ $parameter.profileId }}",
            "accessToken": "={{ $parameter.accessToken }}",
            "phoneNumberId": "={{ $parameter.phoneNumberId }}"
          },
          "method": "POST"
        }
      },
      "resource": "connect"
    },
    {
      "name": "Generate Telegram Code",
      "value": "getTelegramConnectStatus",
      "action": "Generate Telegram code",
      "routing": {
        "request": {
          "qs": {
            "profileId": "={{ $parameter.profileId }}"
          },
          "url": "/connect/telegram",
          "method": "GET"
        }
      },
      "resource": "connect"
    },
    {
      "name": "Connect Telegram Directly",
      "value": "initiateTelegramConnect",
      "action": "Connect Telegram directly",
      "routing": {
        "request": {
          "url": "/connect/telegram",
          "body": {
            "chatId": "={{ $parameter.chatId }}",
            "profileId": "={{ $parameter.profileId }}"
          },
          "method": "POST"
        }
      },
      "resource": "connect"
    },
    {
      "name": "Check Telegram Status",
      "value": "completeTelegramConnect",
      "action": "Check Telegram status",
      "routing": {
        "request": {
          "qs": {
            "code": "={{ $parameter.code }}"
          },
          "url": "/connect/telegram",
          "method": "PATCH"
        }
      },
      "resource": "connect"
    },
    {
      "name": "Get Stats",
      "value": "getStats",
      "action": "Get usage statistics",
      "routing": {
        "request": {
          "url": "/usage-stats",
          "method": "GET"
        }
      },
      "resource": "usage"
    },
    {
      "name": "Get Usage Stats",
      "value": "getUsageStats",
      "action": "Get plan and usage stats",
      "routing": {
        "request": {
          "url": "/usage-stats",
          "method": "GET"
        }
      },
      "resource": "usage"
    },
    {
      "name": "List Pages",
      "value": "listPages",
      "action": "List Facebook pages",
      "routing": {
        "request": {
          "qs": {
            "profileId": "={{ $parameter.profileId }}",
            "tempToken": "={{ $parameter.tempToken }}"
          },
          "url": "/connect/facebook/select-page",
          "method": "GET"
        }
      },
      "resource": "facebook"
    },
    {
      "name": "Select Page",
      "value": "selectPage",
      "action": "Select Facebook page",
      "routing": {
        "request": {
          "url": "/connect/facebook/select-page",
          "body": {
            "pageId": "={{ $parameter.pageId }}",
            "profileId": "={{ $parameter.profileId }}",
            "tempToken": "={{ $parameter.tempToken }}",
            "userProfile": "={{ { id: $parameter.userProfileId || '', name: $parameter.userProfileName || '', email: $parameter.userProfileEmail || '', picture: $parameter.userProfilePicture || '', accessToken: $parameter.userProfileAccessToken || '' } }}"
          },
          "method": "POST"
        }
      },
      "resource": "facebook"
    },
    {
      "name": "List Account Pages",
      "value": "listAccountPages",
      "action": "List Facebook pages for account",
      "routing": {
        "request": {
          "url": "=/accounts/{{ $parameter.accountId }}/facebook-page",
          "method": "GET"
        }
      },
      "resource": "facebook"
    },
    {
      "name": "Update Page",
      "value": "updatePage",
      "action": "Update Facebook page",
      "routing": {
        "request": {
          "url": "=/accounts/{{ $parameter.accountId }}/facebook-page",
          "body": {
            "selectedPageId": "={{ $parameter.selectedPageId }}"
          },
          "method": "PUT"
        }
      },
      "resource": "facebook"
    },
    {
      "name": "Update Organization",
      "value": "updateOrganization",
      "action": "Update LinkedIn organization",
      "routing": {
        "request": {
          "url": "=/accounts/{{ $parameter.accountId }}/linkedin-organization",
          "body": {
            "accountType": "={{ $parameter.accountType }}",
            "selectedOrganization": "={{ { id: $parameter.organizationId || '', urn: $parameter.organizationUrn || '', name: $parameter.organizationName || '', logoUrl: $parameter.organizationLogoUrl || '', description: $parameter.organizationDescription || '' } }}"
          },
          "method": "PUT"
        }
      },
      "resource": "linkedin"
    },
    {
      "name": "Clone Connection",
      "value": "cloneConnection",
      "action": "Clone connection to profile",
      "routing": {
        "request": {
          "url": "=/profiles/{{ $parameter.profileId }}/clone-connection",
          "body": {
            "targetPageId": "={{ $parameter.targetPageId || undefined }}",
            "targetPageName": "={{ $parameter.targetPageName || undefined }}",
            "sourceAccountId": "={{ $parameter.sourceAccountId }}",
            "targetAccountType": "={{ $parameter.targetAccountType || undefined }}",
            "targetOrganizationId": "={{ $parameter.targetOrganizationId || undefined }}",
            "targetOrganizationUrn": "={{ $parameter.targetOrganizationUrn || undefined }}",
            "targetPageAccessToken": "={{ $parameter.targetPageAccessToken || undefined }}",
            "targetOrganizationName": "={{ $parameter.targetOrganizationName || undefined }}"
          },
          "method": "POST"
        }
      },
      "resource": "clone"
    },
    {
      "name": "Get Settings",
      "value": "get",
      "action": "Get webhook settings",
      "routing": {
        "request": {
          "url": "/webhooks/settings",
          "method": "GET"
        }
      },
      "resource": "webhooks"
    },
    {
      "name": "Create Settings",
      "value": "create",
      "action": "Create webhook settings",
      "routing": {
        "request": {
          "url": "/webhooks/settings",
          "body": {
            "url": "={{ $parameter.url }}",
            "name": "={{ $parameter.name || undefined }}",
            "events": "={{ $parameter.events || undefined }}",
            "secret": "={{ $parameter.secret || undefined }}",
            "isActive": "={{ $parameter.isActive }}",
            "customHeaders": "={{ $parameter.customHeaders || undefined }}"
          },
          "method": "POST"
        }
      },
      "resource": "webhooks"
    },
    {
      "name": "Update Settings",
      "value": "update",
      "action": "Update webhook settings",
      "routing": {
        "request": {
          "url": "/webhooks/settings",
          "body": {
            "_id": "={{ $parameter.webhookId }}",
            "url": "={{ $parameter.url || undefined }}",
            "name": "={{ $parameter.name || undefined }}",
            "events": "={{ $parameter.events || undefined }}",
            "secret": "={{ $parameter.secret || undefined }}",
            "isActive": "={{ $parameter.isActive }}",
            "customHeaders": "={{ $parameter.customHeaders || undefined }}"
          },
          "method": "PUT"
        }
      },
      "resource": "webhooks"
    },
    {
      "name": "Delete Settings",
      "value": "delete",
      "action": "Delete webhook settings",
      "routing": {
        "request": {
          "qs": {
            "id": "={{ $parameter.webhookId }}"
          },
          "url": "/webhooks/settings",
          "method": "DELETE"
        }
      },
      "resource": "webhooks"
    },
    {
      "name": "Test Webhook",
      "value": "test",
      "action": "Send test webhook",
      "routing": {
        "request": {
          "url": "/webhooks/test",
          "body": {
            "webhookId": "={{ $parameter.webhookId }}"
          },
          "method": "POST"
        }
      },
      "resource": "webhooks"
    },
    {
      "name": "Get Logs",
      "value": "logs",
      "action": "Get webhook delivery logs",
      "routing": {
        "request": {
          "qs": {
            "event": "={{ $parameter.event || undefined }}",
            "limit": "={{ $parameter.limit || 50 }}",
            "status": "={{ $parameter.status || undefined }}",
            "webhookId": "={{ $parameter.webhookId || undefined }}"
          },
          "url": "/webhooks/logs",
          "method": "GET"
        }
      },
      "resource": "webhooks"
    },
    {
      "name": "List Slots",
      "value": "list",
      "action": "List queue slots",
      "routing": {
        "request": {
          "qs": {
            "all": "={{ $parameter.all ? 'true' : undefined }}",
            "queueId": "={{ $parameter.queueId || undefined }}",
            "profileId": "={{ $parameter.profileId }}"
          },
          "url": "/queue/slots",
          "method": "GET"
        }
      },
      "resource": "queue"
    },
    {
      "name": "Create Slot",
      "value": "create",
      "action": "Create queue slot",
      "routing": {
        "request": {
          "url": "/queue/slots",
          "body": {
            "name": "={{ $parameter.name }}",
            "slots": "={{ $parameter.slots }}",
            "active": "={{ $parameter.active }}",
            "timezone": "={{ $parameter.timezone }}",
            "profileId": "={{ $parameter.profileId }}"
          },
          "method": "POST"
        }
      },
      "resource": "queue"
    },
    {
      "name": "Update Slot",
      "value": "update",
      "action": "Update queue slot",
      "routing": {
        "request": {
          "url": "/queue/slots",
          "body": {
            "name": "={{ $parameter.name || undefined }}",
            "slots": "={{ $parameter.slots }}",
            "active": "={{ $parameter.active }}",
            "queueId": "={{ $parameter.queueId || undefined }}",
            "timezone": "={{ $parameter.timezone }}",
            "profileId": "={{ $parameter.profileId }}",
            "setAsDefault": "={{ $parameter.setAsDefault }}",
            "reshuffleExisting": "={{ $parameter.reshuffleExisting }}"
          },
          "method": "PUT"
        }
      },
      "resource": "queue"
    },
    {
      "name": "Delete Slot",
      "value": "delete",
      "action": "Delete queue slot",
      "routing": {
        "request": {
          "qs": {
            "queueId": "={{ $parameter.queueId }}",
            "profileId": "={{ $parameter.profileId }}"
          },
          "url": "/queue/slots",
          "method": "DELETE"
        }
      },
      "resource": "queue"
    },
    {
      "name": "Preview Queue",
      "value": "preview",
      "action": "Preview upcoming queue posts",
      "routing": {
        "request": {
          "qs": {
            "count": "={{ $parameter.count || 20 }}",
            "queueId": "={{ $parameter.queueId || undefined }}",
            "profileId": "={{ $parameter.profileId }}"
          },
          "url": "/queue/preview",
          "method": "GET"
        }
      },
      "resource": "queue"
    },
    {
      "name": "Get Next Slot",
      "value": "nextSlot",
      "action": "Get next available queue slot",
      "routing": {
        "request": {
          "qs": {
            "queueId": "={{ $parameter.queueId || undefined }}",
            "profileId": "={{ $parameter.profileId }}"
          },
          "url": "/queue/next-slot",
          "method": "GET"
        }
      },
      "resource": "queue"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List account groups",
      "routing": {
        "request": {
          "url": "/account-groups",
          "method": "GET"
        }
      },
      "resource": "accountGroups"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create account group",
      "routing": {
        "request": {
          "url": "/account-groups",
          "body": {
            "name": "={{ $parameter.name }}",
            "accountIds": "={{ $parameter.accountIds.split(',').map(s => s.trim()).filter(s => s) }}"
          },
          "method": "POST"
        }
      },
      "resource": "accountGroups"
    },
    {
      "name": "Update",
      "value": "update",
      "action": "Update account group",
      "routing": {
        "request": {
          "url": "=/account-groups/{{ $parameter.groupId }}",
          "body": {
            "name": "={{ $parameter.name || undefined }}",
            "accountIds": "={{ $parameter.accountIds ? $parameter.accountIds.split(',').map(s => s.trim()).filter(s => s) : undefined }}"
          },
          "method": "PUT"
        }
      },
      "resource": "accountGroups"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete account group",
      "routing": {
        "request": {
          "url": "=/account-groups/{{ $parameter.groupId }}",
          "method": "DELETE"
        }
      },
      "resource": "accountGroups"
    },
    {
      "name": "Get Analytics",
      "value": "get",
      "action": "Get post analytics",
      "routing": {
        "request": {
          "qs": {
            "page": "={{ $parameter.page || undefined }}",
            "limit": "={{ $parameter.limit || undefined }}",
            "order": "={{ $parameter.order || undefined }}",
            "postId": "={{ $parameter.postId || undefined }}",
            "sortBy": "={{ $parameter.sortBy || undefined }}",
            "source": "={{ $parameter.source || undefined }}",
            "toDate": "={{ $parameter.toDate || undefined }}",
            "fromDate": "={{ $parameter.fromDate || undefined }}",
            "platform": "={{ $parameter.platform || undefined }}",
            "accountId": "={{ $parameter.accountId || undefined }}",
            "profileId": "={{ $parameter.profileId || undefined }}"
          },
          "url": "/analytics",
          "method": "GET"
        }
      },
      "resource": "analytics"
    },
    {
      "name": "YouTube Daily Views",
      "value": "youtubeDailyViews",
      "action": "Get YouTube daily views",
      "routing": {
        "request": {
          "qs": {
            "endDate": "={{ $parameter.endDate || undefined }}",
            "videoId": "={{ $parameter.videoId }}",
            "accountId": "={{ $parameter.accountId }}",
            "startDate": "={{ $parameter.startDate || undefined }}"
          },
          "url": "/analytics/youtube/daily-views",
          "method": "GET"
        }
      },
      "resource": "analytics"
    },
    {
      "name": "Instagram Account Insights",
      "value": "instagramAccountInsights",
      "action": "Get Instagram account-level insights",
      "routing": {
        "request": {
          "qs": {
            "since": "={{ $parameter.since || undefined }}",
            "until": "={{ $parameter.until || undefined }}",
            "metrics": "={{ $parameter.metrics || undefined }}",
            "accountId": "={{ $parameter.accountId }}",
            "breakdown": "={{ $parameter.breakdown || undefined }}",
            "metricType": "={{ $parameter.metricType || undefined }}"
          },
          "url": "/analytics/instagram/account-insights",
          "method": "GET"
        }
      },
      "resource": "analytics"
    },
    {
      "name": "Instagram Demographics",
      "value": "instagramDemographics",
      "action": "Get Instagram audience demographics",
      "routing": {
        "request": {
          "qs": {
            "metric": "={{ $parameter.metric || undefined }}",
            "accountId": "={{ $parameter.accountId }}",
            "breakdown": "={{ $parameter.breakdown || undefined }}",
            "timeframe": "={{ $parameter.timeframe || undefined }}"
          },
          "url": "/analytics/instagram/demographics",
          "method": "GET"
        }
      },
      "resource": "analytics"
    },
    {
      "name": "Daily Metrics",
      "value": "dailyMetrics",
      "action": "Get daily aggregated metrics",
      "routing": {
        "request": {
          "qs": {
            "source": "={{ $parameter.source || undefined }}",
            "toDate": "={{ $parameter.toDateTime || undefined }}",
            "fromDate": "={{ $parameter.fromDateTime || undefined }}",
            "platform": "={{ $parameter.platform || undefined }}",
            "accountId": "={{ $parameter.accountId || undefined }}",
            "profileId": "={{ $parameter.profileId || undefined }}"
          },
          "url": "/analytics/daily-metrics",
          "method": "GET"
        }
      },
      "resource": "analytics"
    },
    {
      "name": "Best Time to Post",
      "value": "bestTime",
      "action": "Get best times to post",
      "routing": {
        "request": {
          "qs": {
            "source": "={{ $parameter.source || undefined }}",
            "platform": "={{ $parameter.platform || undefined }}",
            "profileId": "={{ $parameter.profileId || undefined }}"
          },
          "url": "/analytics/best-time",
          "method": "GET"
        }
      },
      "resource": "analytics"
    },
    {
      "name": "Content Decay",
      "value": "contentDecay",
      "action": "Get content performance decay",
      "routing": {
        "request": {
          "qs": {
            "source": "={{ $parameter.source || undefined }}",
            "platform": "={{ $parameter.platform || undefined }}",
            "profileId": "={{ $parameter.profileId || undefined }}"
          },
          "url": "/analytics/content-decay",
          "method": "GET"
        }
      },
      "resource": "analytics"
    },
    {
      "name": "Posting Frequency",
      "value": "postingFrequency",
      "action": "Get posting frequency vs engagement",
      "routing": {
        "request": {
          "qs": {
            "source": "={{ $parameter.source || undefined }}",
            "platform": "={{ $parameter.platform || undefined }}",
            "profileId": "={{ $parameter.profileId || undefined }}"
          },
          "url": "/analytics/posting-frequency",
          "method": "GET"
        }
      },
      "resource": "analytics"
    },
    {
      "name": "Post Timeline",
      "value": "postTimeline",
      "action": "Get post analytics timeline",
      "routing": {
        "request": {
          "qs": {
            "postId": "={{ $parameter.postId }}",
            "toDate": "={{ $parameter.toDateTime || undefined }}",
            "fromDate": "={{ $parameter.fromDateTime || undefined }}"
          },
          "url": "/analytics/post-timeline",
          "method": "GET"
        }
      },
      "resource": "analytics"
    },
    {
      "name": "Follower Stats",
      "value": "followerStats",
      "action": "Get follower stats",
      "routing": {
        "request": {
          "qs": {
            "toDate": "={{ $parameter.toDate || undefined }}",
            "fromDate": "={{ $parameter.fromDate || undefined }}",
            "profileId": "={{ $parameter.profileId || undefined }}",
            "accountIds": "={{ $parameter.accountIds || undefined }}",
            "granularity": "={{ $parameter.granularity || undefined }}"
          },
          "url": "/accounts/follower-stats",
          "method": "GET"
        }
      },
      "resource": "analytics"
    },
    {
      "name": "LinkedIn Aggregate Analytics",
      "value": "linkedinAggregateAnalytics",
      "action": "Get LinkedIn aggregate stats",
      "routing": {
        "request": {
          "qs": {
            "endDate": "={{ $parameter.endDate || undefined }}",
            "metrics": "={{ $parameter.metrics || undefined }}",
            "startDate": "={{ $parameter.startDate || undefined }}",
            "aggregation": "={{ $parameter.aggregation || undefined }}"
          },
          "url": "=/accounts/{{ $parameter.accountIdPath }}/linkedin-aggregate-analytics",
          "method": "GET"
        }
      },
      "resource": "analytics"
    },
    {
      "name": "LinkedIn Post Analytics",
      "value": "linkedinPostAnalytics",
      "action": "Get LinkedIn post stats",
      "routing": {
        "request": {
          "qs": {
            "urn": "={{ $parameter.urn }}"
          },
          "url": "=/accounts/{{ $parameter.accountIdPath }}/linkedin-post-analytics",
          "method": "GET"
        }
      },
      "resource": "analytics"
    },
    {
      "name": "LinkedIn Post Reactions",
      "value": "linkedinPostReactions",
      "action": "Get LinkedIn post reactions",
      "routing": {
        "request": {
          "qs": {
            "urn": "={{ $parameter.urn }}",
            "limit": "={{ $parameter.limit || undefined }}",
            "cursor": "={{ $parameter.cursor || undefined }}"
          },
          "url": "=/accounts/{{ $parameter.accountIdPath }}/linkedin-post-reactions",
          "method": "GET"
        }
      },
      "resource": "analytics"
    },
    {
      "name": "Connect with Credentials",
      "value": "connect",
      "action": "Connect Bluesky account with credentials",
      "routing": {
        "request": {
          "url": "/connect/bluesky/credentials",
          "body": {
            "handle": "={{ $parameter.handle }}",
            "profileId": "={{ $parameter.profileId }}",
            "appPassword": "={{ $parameter.appPassword }}"
          },
          "method": "POST"
        }
      },
      "resource": "bluesky"
    },
    {
      "name": "Disconnect",
      "value": "disconnect",
      "action": "Disconnect Bluesky account",
      "routing": {
        "request": {
          "url": "=/accounts/{{ $parameter.accountId }}",
          "method": "DELETE"
        }
      },
      "resource": "bluesky"
    },
    {
      "name": "List Boards",
      "value": "listBoards",
      "action": "List Pinterest boards",
      "routing": {
        "request": {
          "url": "=/accounts/{{ $parameter.accountId }}/pinterest-boards",
          "method": "GET"
        }
      },
      "resource": "pinterest"
    },
    {
      "name": "Select Board",
      "value": "selectBoard",
      "action": "Select Pinterest board for posting",
      "routing": {
        "request": {
          "url": "=/accounts/{{ $parameter.accountId }}/pinterest-boards",
          "body": {
            "boardId": "={{ $parameter.boardId }}"
          },
          "method": "PUT"
        }
      },
      "resource": "pinterest"
    },
    {
      "name": "List Subreddits",
      "value": "listSubreddits",
      "action": "List saved subreddits",
      "routing": {
        "request": {
          "url": "=/accounts/{{ $parameter.accountId }}/reddit-subreddits",
          "method": "GET"
        }
      },
      "resource": "reddit"
    },
    {
      "name": "Update Subreddits",
      "value": "updateSubreddits",
      "action": "Update saved subreddits",
      "routing": {
        "request": {
          "url": "=/accounts/{{ $parameter.accountId }}/reddit-subreddits",
          "body": {
            "subredditIds": "={{ $parameter.subredditIds.split(',').map(s => s.trim()).filter(s => s) }}"
          },
          "method": "PUT"
        }
      },
      "resource": "reddit"
    },
    {
      "name": "Search Posts",
      "value": "searchReddit",
      "action": "Search Reddit posts",
      "routing": {
        "request": {
          "qs": {
            "q": "={{ $parameter.q }}",
            "sort": "={{ $parameter.sort || 'new' }}",
            "after": "={{ $parameter.after || undefined }}",
            "limit": "={{ $parameter.limit || 25 }}",
            "accountId": "={{ $parameter.accountId }}",
            "subreddit": "={{ $parameter.subreddit || undefined }}",
            "restrict_sr": "={{ $parameter.restrict_sr || undefined }}"
          },
          "url": "/reddit/search",
          "method": "GET"
        }
      },
      "resource": "reddit"
    },
    {
      "name": "Get Feed",
      "value": "feed",
      "action": "Get subreddit feed",
      "routing": {
        "request": {
          "qs": {
            "t": "={{ $parameter.t || undefined }}",
            "sort": "={{ $parameter.sort || 'hot' }}",
            "after": "={{ $parameter.after || undefined }}",
            "limit": "={{ $parameter.limit || 25 }}",
            "accountId": "={{ $parameter.accountId }}",
            "subreddit": "={{ $parameter.subreddit || undefined }}"
          },
          "url": "/reddit/feed",
          "method": "GET"
        }
      },
      "resource": "reddit"
    },
    {
      "name": "Get Status",
      "value": "getStatus",
      "action": "Get Telegram connection status",
      "routing": {
        "request": {
          "url": "/connect/telegram",
          "method": "GET"
        }
      },
      "resource": "telegram"
    },
    {
      "name": "Initiate Connection",
      "value": "initiate",
      "action": "Start Telegram connection flow",
      "routing": {
        "request": {
          "url": "/connect/telegram",
          "body": {
            "profileId": "={{ $parameter.profileId }}"
          },
          "method": "POST"
        }
      },
      "resource": "telegram"
    },
    {
      "name": "List Locations",
      "value": "listLocations",
      "action": "List Google Business locations",
      "routing": {
        "request": {
          "qs": {
            "tempToken": "={{ $parameter.tempToken }}"
          },
          "url": "/connect/googlebusiness/locations",
          "method": "GET"
        }
      },
      "resource": "googlebusiness"
    },
    {
      "name": "Select Location",
      "value": "selectLocation",
      "action": "Select Google Business location",
      "routing": {
        "request": {
          "url": "/connect/googlebusiness/select-location",
          "body": {
            "tempToken": "={{ $parameter.tempToken }}",
            "locationId": "={{ $parameter.locationId }}"
          },
          "method": "POST"
        }
      },
      "resource": "googlebusiness"
    },
    {
      "name": "List Account Locations",
      "value": "listAccountLocations",
      "action": "List GBP locations for account",
      "routing": {
        "request": {
          "url": "=/accounts/{{ $parameter.accountId }}/gmb-locations",
          "method": "GET"
        }
      },
      "resource": "googlebusiness"
    },
    {
      "name": "Switch Location",
      "value": "switchLocation",
      "action": "Switch GBP location for account",
      "routing": {
        "request": {
          "url": "=/accounts/{{ $parameter.accountId }}/gmb-locations",
          "body": {
            "locationId": "={{ $parameter.newLocationId }}"
          },
          "method": "PUT"
        }
      },
      "resource": "googlebusiness"
    },
    {
      "name": "List Reviews",
      "value": "listReviews",
      "action": "List Google Business reviews",
      "routing": {
        "request": {
          "qs": {
            "page": "={{ $parameter.page || 1 }}",
            "limit": "={{ $parameter.limit || 20 }}"
          },
          "url": "=/accounts/{{ $parameter.accountId }}/gmb-reviews",
          "method": "GET"
        }
      },
      "resource": "googlebusiness"
    },
    {
      "name": "Reply to Review",
      "value": "replyReview",
      "action": "Reply to a Google Business review",
      "routing": {
        "request": {
          "url": "=/accounts/{{ $parameter.accountId }}/gmb-reviews/{{ $parameter.reviewId }}/reply",
          "body": {
            "comment": "={{ $parameter.comment }}"
          },
          "method": "POST"
        }
      },
      "resource": "googlebusiness"
    },
    {
      "name": "Delete Review Reply",
      "value": "deleteReply",
      "action": "Delete a review reply",
      "routing": {
        "request": {
          "url": "=/accounts/{{ $parameter.accountId }}/gmb-reviews/{{ $parameter.reviewId }}/reply",
          "method": "DELETE"
        }
      },
      "resource": "googlebusiness"
    },
    {
      "name": "List Profiles",
      "value": "listProfiles",
      "action": "List Snapchat profiles",
      "routing": {
        "request": {
          "qs": {
            "tempToken": "={{ $parameter.tempToken }}"
          },
          "url": "/connect/snapchat/select-profile",
          "method": "GET"
        }
      },
      "resource": "snapchat"
    },
    {
      "name": "Select Profile",
      "value": "selectProfile",
      "action": "Select Snapchat profile",
      "routing": {
        "request": {
          "url": "/connect/snapchat/select-profile",
          "body": {
            "profileId": "={{ $parameter.snapchatProfileId }}",
            "tempToken": "={{ $parameter.tempToken }}"
          },
          "method": "POST"
        }
      },
      "resource": "snapchat"
    },
    {
      "name": "Create Token",
      "value": "create",
      "action": "Create invite token",
      "routing": {
        "request": {
          "url": "/invite/tokens",
          "body": {
            "scope": "={{ $parameter.scope }}",
            "profileIds": "={{ $parameter.scope === 'profiles' ? $parameter.profileIds.split(',').map(s => s.trim()).filter(s => s) : undefined }}"
          },
          "method": "POST"
        }
      },
      "resource": "invites"
    },
    {
      "name": "List Posts Logs",
      "value": "listPostsLogs",
      "action": "List publishing logs",
      "routing": {
        "request": {
          "qs": {
            "days": "={{ $parameter.days || 7 }}",
            "skip": "={{ $parameter.skip || 0 }}",
            "limit": "={{ $parameter.limit || 50 }}",
            "action": "={{ $parameter.action || undefined }}",
            "search": "={{ $parameter.search || undefined }}",
            "status": "={{ $parameter.status || undefined }}",
            "platform": "={{ $parameter.platform || undefined }}"
          },
          "url": "/posts/logs",
          "method": "GET"
        }
      },
      "resource": "logs"
    },
    {
      "name": "List Connection Logs",
      "value": "listConnectionLogs",
      "action": "List connection logs",
      "routing": {
        "request": {
          "qs": {
            "days": "={{ $parameter.days || 7 }}",
            "skip": "={{ $parameter.skip || 0 }}",
            "limit": "={{ $parameter.limit || 50 }}",
            "status": "={{ $parameter.connectionStatus || undefined }}",
            "platform": "={{ $parameter.platform || undefined }}",
            "eventType": "={{ $parameter.eventType || undefined }}"
          },
          "url": "/connections/logs",
          "method": "GET"
        }
      },
      "resource": "logs"
    },
    {
      "name": "Get Post Logs",
      "value": "getPostLogs",
      "action": "Get post logs",
      "routing": {
        "request": {
          "qs": {
            "limit": "={{ $parameter.limit || 50 }}"
          },
          "url": "=/posts/{{ $parameter.postId }}/logs",
          "method": "GET"
        }
      },
      "resource": "logs"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List API keys",
      "routing": {
        "request": {
          "url": "/api-keys",
          "method": "GET"
        }
      },
      "resource": "apiKeys"
    },
    {
      "name": "Create",
      "value": "create",
      "action": "Create API key",
      "routing": {
        "request": {
          "url": "/api-keys",
          "body": {
            "name": "={{ $parameter.name }}",
            "scope": "={{ $parameter.scope }}",
            "expiresIn": "={{ $parameter.expiresIn || undefined }}",
            "permission": "={{ $parameter.permission }}",
            "profileIds": "={{ $parameter.scope === 'profiles' ? $parameter.profileIds : undefined }}"
          },
          "method": "POST"
        }
      },
      "resource": "apiKeys"
    },
    {
      "name": "Delete",
      "value": "delete",
      "action": "Delete API key",
      "routing": {
        "request": {
          "url": "=/api-keys/{{ $parameter.keyId }}",
          "method": "DELETE"
        }
      },
      "resource": "apiKeys"
    },
    {
      "name": "List",
      "value": "list",
      "action": "List users",
      "routing": {
        "request": {
          "url": "/users",
          "method": "GET"
        }
      },
      "resource": "users"
    },
    {
      "name": "Get",
      "value": "get",
      "action": "Get user",
      "routing": {
        "request": {
          "url": "=/users/{{ $parameter.userId }}",
          "method": "GET"
        }
      },
      "resource": "users"
    },
    {
      "name": "YouTube: Download",
      "value": "youtubeDownload",
      "action": "Download YouTube video",
      "routing": {
        "request": {
          "qs": {
            "url": "={{ $parameter.url }}",
            "action": "={{ $parameter.action }}",
            "format": "={{ $parameter.format }}",
            "quality": "={{ $parameter.quality }}",
            "formatId": "={{ $parameter.formatId }}"
          },
          "url": "/tools/youtube/download",
          "method": "GET"
        }
      },
      "resource": "tools"
    },
    {
      "name": "YouTube: Transcript",
      "value": "youtubeTranscript",
      "action": "Get YouTube transcript",
      "routing": {
        "request": {
          "qs": {
            "url": "={{ $parameter.url }}",
            "lang": "={{ $parameter.lang }}"
          },
          "url": "/tools/youtube/transcript",
          "method": "GET"
        }
      },
      "resource": "tools"
    },
    {
      "name": "Instagram: Download",
      "value": "instagramDownload",
      "action": "Download Instagram media",
      "routing": {
        "request": {
          "qs": {
            "url": "={{ $parameter.url }}"
          },
          "url": "/tools/instagram/download",
          "method": "GET"
        }
      },
      "resource": "tools"
    },
    {
      "name": "Instagram: Hashtag Checker",
      "value": "instagramHashtagChecker",
      "action": "Check IG hashtag bans",
      "routing": {
        "request": {
          "url": "/tools/instagram/hashtag-checker",
          "body": {
            "hashtags": "={{ $parameter.hashtags }}"
          },
          "method": "POST"
        }
      },
      "resource": "tools"
    },
    {
      "name": "TikTok: Download",
      "value": "tiktokDownload",
      "action": "Download TikTok video",
      "routing": {
        "request": {
          "qs": {
            "url": "={{ $parameter.url }}",
            "action": "={{ $parameter.action }}",
            "formatId": "={{ $parameter.formatId }}"
          },
          "url": "/tools/tiktok/download",
          "method": "GET"
        }
      },
      "resource": "tools"
    },
    {
      "name": "Twitter/X: Download",
      "value": "twitterDownload",
      "action": "Download Twitter/X media",
      "routing": {
        "request": {
          "qs": {
            "url": "={{ $parameter.url }}",
            "action": "={{ $parameter.action }}",
            "formatId": "={{ $parameter.formatId }}"
          },
          "url": "/tools/twitter/download",
          "method": "GET"
        }
      },
      "resource": "tools"
    },
    {
      "name": "Facebook: Download",
      "value": "facebookDownload",
      "action": "Download Facebook video",
      "routing": {
        "request": {
          "qs": {
            "url": "={{ $parameter.url }}"
          },
          "url": "/tools/facebook/download",
          "method": "GET"
        }
      },
      "resource": "tools"
    },
    {
      "name": "LinkedIn: Download",
      "value": "linkedinDownload",
      "action": "Download LinkedIn video",
      "routing": {
        "request": {
          "qs": {
            "url": "={{ $parameter.url }}"
          },
          "url": "/tools/linkedin/download",
          "method": "GET"
        }
      },
      "resource": "tools"
    },
    {
      "name": "Bluesky: Download",
      "value": "blueskyDownload",
      "action": "Download Bluesky media",
      "routing": {
        "request": {
          "qs": {
            "url": "={{ $parameter.url }}"
          },
          "url": "/tools/bluesky/download",
          "method": "GET"
        }
      },
      "resource": "tools"
    }
  ]

npm_readme:
  # n8n-nodes-zernio

  <img src="https://zernio.com/brand/logo-primary.png" alt="Zernio Logo" width="200"/>

  An n8n community node for the [Zernio API](https://zernio.com) - the professional social media management platform.

  **Schedule and manage social media posts across multiple platforms:**
  - 🐦 **Twitter/X** - Posts, threads, and automation
  - 📸 **Instagram** - Posts, Stories, Reels with Business account support
  - 👤 **Facebook** - Page management and posting
  - 💼 **LinkedIn** - Personal and company page posting
  - 🎵 **TikTok** - Direct video posting with privacy controls
  - 📹 **YouTube** - Videos and Shorts with custom thumbnails
  - 🧵 **Threads** - Meta's social platform
  - 🦋 **Bluesky** - Decentralized social network
  - 📌 **Pinterest** - Pin to boards
  - 🤖 **Reddit** - Post to subreddits
  - ✈️ **Telegram** - Channel posting
  - 📍 **Google Business** - Business profile posts and reviews
  - 👻 **Snapchat** - Public profile posting

  ## Version History

  - **1.0.0** - Initial release with comprehensive Zernio API integration

  ## Installation

  ### From n8n Community Nodes Panel (Recommended)

  1. Go to **Settings** → **Community Nodes** in your n8n instance
  2. Select **Install** and enter `n8n-nodes-zernio`
  3. Click **Install** and restart n8n
  4. The Zernio node will appear in your node palette

  > **Note:** Also available as `n8n-nodes-late` for backwards compatibility.

  ### From npm

  ```bash
  npm install n8n-nodes-zernio
  ```

  ### From Source

  ```bash
  git clone https://github.com/zernio-dev/n8n-nodes-zernio.git
  cd n8n-nodes-zernio
  npm install
  npm run build
  ```

  ## Prerequisites

  1. **Zernio Account**: Sign up at [zernio.com](https://zernio.com)
  2. **API Key**: Generate an API key from your Zernio dashboard
  3. **Social Accounts**: Connect your social media accounts to Zernio profiles

  ## Credentials Setup

  1. Add a new credential in n8n
  2. Search for "Zernio API"
  3. Enter your API key from the Zernio dashboard

  ## Quick Start

  ### 1. Create a Profile

  Profiles organize your social media accounts by brand, client, or purpose.

  ```json
  {
    "resource": "profiles",
    "operation": "create",
    "name": "Personal Brand",
    "description": "My personal social media accounts",
    "color": "#4ade80"
  }
  ```

  ### 2. Connect Social Accounts

  Connect your social media platforms to the profile:

  ```json
  {
    "resource": "connect",
    "operation": "connect",
    "platform": "twitter",
    "profileId": "profile_123_abc"
  }
  ```

  ### 3. Schedule a Post

  Create posts across multiple platforms:

  ```json
  {
    "resource": "posts",
    "operation": "create",
    "content": "Hello, world! #automation",
    "platforms": [
      {"platform": "twitter", "accountId": "twitter_account_123"},
      {"platform": "linkedin", "accountId": "linkedin_account_456"}
    ],
    "scheduledFor": "2024-01-15T16:00:00",
    "timezone": "America/New_York"
  }
  ```

  ## Supported Operations

  ### Profiles
  - **List** - Get all profiles
  - **Create** - Create new profile (subject to plan limits)
  - **Update** - Update profile details
  - **Delete** - Delete profile (must be empty)

  ### Posts
  - **List** - Get posts with pagination and filters
  - **Get** - Get specific post details
  - **Create** - Schedule or publish posts
  - **Update** - Edit draft/scheduled posts
  - **Delete** - Delete posts (published posts cannot be deleted)
  - **Retry** - Retry failed posts
  - **Logs** - Get publishing logs for a post
  - **Bulk Upload** - Upload multiple posts at once

  ### Media
  - **Upload** - Upload images/videos up to 5GB
  - **Presign** - Get presigned URL for large file uploads

  ### Social Accounts
  - **List** - View connected accounts
  - **Get** - Get specific account details
  - **Update** - Update account settings (e.g., display name)
  - **Delete** - Disconnect accounts
  - **Health** - Check account connection health
  - **All Health** - Check health of all accounts
  - **Follower Stats** - Get follower statistics

  ### Account Groups
  - **List** - Get all account groups
  - **Get** - Get specific group details
  - **Create** - Create new account group
  - **Update** - Update group settings
  - **Delete** - Delete account group

  ### Connect Platform
  - **Connect** - Initiate OAuth for new platforms

  ### Usage Statistics
  - **Get Stats** - Monitor usage against plan limits

  ### Analytics
  - **Get** - Get post analytics across platforms
  - **YouTube Daily Views** - Get daily view statistics for YouTube

  ### Queue (Scheduling Slots)
  - **List** - Get queue slots for a profile
  - **Create** - Create new queue slot
  - **Update** - Update slot time
  - **Delete** - Remove queue slot
  - **Preview** - Preview upcoming scheduled posts
  - **Next Slot** - Get next available slot time

  ### Webhooks
  - **Get** - Get webhook configuration
  - **Create** - Create new webhook endpoint
  - **Update** - Update webhook settings
  - **Delete** - Remove webhook
  - **Test** - Send test webhook event
  - **Logs** - View webhook delivery history

  ### Facebook Management
  - **List Pages** - Get available Facebook pages
  - **Select Page** - Connect specific page
  - **List Account Pages** - Get pages for a specific account
  - **Update Page** - Change active page

  ### LinkedIn Management
  - **Update Organization** - Switch between personal/company posting

  ### Google Business Management
  - **List Locations** - Get available business locations
  - **Select Location** - Connect specific location
  - **List Account Locations** - Get locations for an account
  - **Switch Location** - Change active location
  - **List Reviews** - Get business reviews
  - **Reply Review** - Respond to a review
  - **Delete Reply** - Remove review response

  ### Pinterest Management
  - **List Boards** - Get available Pinterest boards
  - **Select Board** - Connect specific board

  ### Bluesky Management
  - **Connect** - Connect Bluesky account with credentials
  - **Disconnect** - Disconnect Bluesky account

  ### Reddit Management
  - **List Subreddits** - Get saved subreddits for posting
  - **Update Subreddits** - Update subreddit list
  - **Search** - Search for subreddits
  - **Feed** - Get subreddit feed (hot, new, top, rising)

  ### Snapchat Management
  - **List Profiles** - Get available public profiles
  - **Select Profile** - Connect specific profile

  ### Telegram Management
  - **Get Status** - Check Telegram connection status
  - **Initiate** - Start Telegram connection flow

  ### Clone Connection
  - **Clone Connection** - Reuse OAuth across profiles

  ### Team Management
  - **Invites: Create** - Invite team members with profile access

  ### API Keys
  - **List** - Get all API keys
  - **Create** - Generate new API key
  - **Delete** - Revoke API key

  ### Users
  - **List** - Get team members
  - **Get** - Get user details

  ### Logs
  - **List** - Get publishing logs with filters
  - **Get** - Get specific log entry

  ## Advanced Features

  ### Platform-Specific Settings

  #### Twitter/X Threads
  Create multi-tweet threads:

  ```json
  {
    "platforms": [
      {
        "platform": "twitter",
        "accountId": "twitter_account_123",
        "platformSpecificData": {
          "threadItems": [
            {"content": "Tweet 1 - Introduction"},
            {"content": "Tweet 2 - Details"},
            {"content": "Tweet 3 - Conclusion"}
          ]
        }
      }
    ]
  }
  ```

  #### Instagram Stories
  Post to Instagram Stories:

  ```json
  {
    "platforms": [
      {
        "platform": "instagram",
        "accountId": "instagram_account_123",
        "platformSpecificData": {
          "contentType": "story"
        }
      }
    ],
    "mediaItems": [
      {"type": "image", "url": "https://your-story-image.jpg"}
    ]
  }
  ```

  #### TikTok Privacy Settings
  Control TikTok post privacy:

  ```json
  {
    "platforms": [
      {
        "platform": "tiktok",
        "accountId": "tiktok_account_123",
        "platformSpecificData": {
          "tiktokSettings": {
            "privacy_level": "PUBLIC_TO_EVERYONE",
            "allow_comment": true,
            "allow_duet": true,
            "allow_stitch": true
          }
        }
      }
    ]
  }
  ```

  #### YouTube Settings
  Add custom thumbnails and first comments:

  ```json
  {
    "platforms": [
      {
        "platform": "youtube",
        "accountId": "youtube_account_123",
        "platformSpecificData": {
          "firstComment": "Thanks for watching! Don't forget to like and subscribe!"
        }
      }
    ],
    "mediaItems": [
      {
        "type": "video",
        "url": "https://your-video.mp4",
        "thumbnail": "https://your-custom-thumbnail.jpg"
      }
    ],
    "tags": ["tutorial", "automation", "n8n"]
  }
  ```

  #### Bluesky Threads
  Create multi-post threads on Bluesky:

  ```json
  {
    "platforms": [
      {
        "platform": "bluesky",
        "accountId": "bluesky_account_123",
        "platformSpecificData": {
          "threadItems": [
            {"content": "Post 1 - Introduction"},
            {"content": "Post 2 - Details"},
            {"content": "Post 3 - Conclusion"}
          ]
        }
      }
    ]
  }
  ```

  ### Media Upload

  Upload files before using in posts:

  ```json
  {
    "resource": "media",
    "operation": "upload",
    "files": [
      {
        "filename": "image.jpg",
        "data": "base64_encoded_data"
      }
    ]
  }
  ```

  For large files (>4MB), use the presign operation:

  ```json
  {
    "resource": "media",
    "operation": "presign",
    "filename": "video.mp4",
    "contentType": "video/mp4"
  }
  ```

  ### Webhooks

  Set up webhooks to receive real-time notifications:

  ```json
  {
    "resource": "webhooks",
    "operation": "create",
    "url": "https://your-server.com/webhook",
    "events": ["post.published", "post.failed"]
  }
  ```

  Available webhook events:
  - `post.scheduled` - Post scheduled
  - `post.published` - Post published successfully
  - `post.failed` - Post failed to publish
  - `post.partial` - Post partially published (some platforms failed)

  ## Platform Requirements

  - **Instagram**: Business account required (Personal/Creator accounts not supported)
  - **Facebook**: Must be admin of Facebook pages
  - **LinkedIn**: Company pages require admin access
  - **TikTok**: Creator account recommended
  - **YouTube**: Channel access required
  - **Twitter/X**: Standard account
  - **Threads**: Standard account
  - **Bluesky**: Standard account (uses app password)
  - **Pinterest**: Business account recommended
  - **Reddit**: Account with posting privileges
  - **Telegram**: Bot token required
  - **Google Business**: Business profile owner/manager access
  - **Snapchat**: Public profile required

  ## Plan Limits

  Zernio enforces usage limits based on your plan:

  - **Free**: 10 posts/month, 2 Social Sets - $0/mo
  - **Build**: 120 posts/month, 10 Social Sets - $13/mo (billed yearly)
  - **Accelerate**: Unlimited posts, 50 Social Sets - $33/mo (billed yearly)
  - **Unlimited**: Unlimited posts, Unlimited Social Sets - $667/mo (billed yearly)

  Optional add-ons available: Analytics, Comments + DMs

  Monitor usage with the Usage Statistics operation.

  ## Error Handling

  The node handles various error scenarios:

  - **403**: Plan limits exceeded
  - **401**: Invalid API key
  - **400**: Invalid request data
  - **404**: Resource not found
  - **429**: Rate limit exceeded

  Check the node output for detailed error messages and upgrade suggestions.

  ## Development

  ### Prerequisites
  - Node.js 18+
  - TypeScript
  - n8n development environment

  ### Setup
  ```bash
  git clone https://github.com/zernio-dev/n8n-nodes-zernio.git
  cd n8n-nodes-zernio
  npm install
  npm run build
  ```

  ### Linting
  ```bash
  npm run lint        # Check for issues
  npm run lintfix     # Fix automatically
  ```

  ## Support

  - **Documentation**: [Zernio API Docs](https://docs.zernio.com)
  - **Dashboard**: [zernio.com/dashboard](https://zernio.com/dashboard)
  - **Email**: [miki@zernio.com](mailto:miki@zernio.com)
  - **Issues**: [GitHub Issues](https://github.com/zernio-dev/n8n-nodes-zernio/issues)

  ## License

  MIT

  ## Contributing

  Contributions are welcome! Please read our contributing guidelines and submit pull requests.

  ---

  **Made with love by the Zernio team**

  [Website](https://zernio.com) | [Documentation](https://docs.zernio.com) | [Dashboard](https://zernio.com/dashboard)

ai_documentation_summary:
  {"purpose":"A community n8n node that schedules and manages social media posts across multiple platforms including Twitter/X, Instagram, LinkedIn, TikTok, YouTube, and others using the Zernio API.","capabilities":["Schedule and publish posts to multiple social media platforms simultaneously","Create, update, delete, and retry social media posts","Manage social media profiles and connect accounts","Upload and manage media files (images/videos up to 5GB)","Schedule posts with specific dates, times, and timezones","Bulk upload multiple posts at once","Monitor usage statistics and plan limits","Get post analytics and follower statistics","Manage queue slots for scheduling","Handle platform-specific features (e.g., Instagram Stories, YouTube Shorts, Google Business Reviews)"],"authentication":"API key required (entered via n8n credentials as 'Zernio API')","commonUseCases":["Automated social media content scheduling","Cross-platform brand management","Client social media outsourcing","Content publishing workflows with time-based triggers","Social media analytics and performance tracking"],"limitations":["Published posts cannot be deleted","Profile creation is subject to plan limits","Bluesky account connection requires manual credential entry","Some features may depend on Zernio's plan tiers"],"relatedNodes":["n8n-nodes-base.code","n8n-nodes-base.httpRequest","n8n-nodes-base.waitUntil","n8n-nodes-base.if"]}


