From 49afd8df948970500c61242033f140bc9d59844c Mon Sep 17 00:00:00 2001
From: adkah <98672834+adkah@users.noreply.github.com>
Date: Mon, 25 May 2026 10:35:20 +0000
Subject: [PATCH] chore: update integration docs
---
.../integrations/cards/botpress/freshdesk.mdx | 892 ++++++++++++
.../integrations/cards/botpress/hubspot.mdx | 224 +++
snippets/integrations/cards/botpress/jira.mdx | 1272 +++++++++++++++++
snippets/integrations/cards/botpress/n8n.mdx | 182 +++
snippets/integrations/cards/botpress/odoo.mdx | 596 +++++++-
.../triggers/botpress/freshdesk.mdx | 279 ++++
.../integrations/triggers/botpress/n8n.mdx | 46 +
snippets/integrations/versions.mdx | 24 +-
8 files changed, 3487 insertions(+), 28 deletions(-)
create mode 100644 snippets/integrations/cards/botpress/freshdesk.mdx
create mode 100644 snippets/integrations/cards/botpress/jira.mdx
create mode 100644 snippets/integrations/cards/botpress/n8n.mdx
create mode 100644 snippets/integrations/triggers/botpress/freshdesk.mdx
create mode 100644 snippets/integrations/triggers/botpress/n8n.mdx
diff --git a/snippets/integrations/cards/botpress/freshdesk.mdx b/snippets/integrations/cards/botpress/freshdesk.mdx
new file mode 100644
index 00000000..1a7e96ce
--- /dev/null
+++ b/snippets/integrations/cards/botpress/freshdesk.mdx
@@ -0,0 +1,892 @@
+{/* This file is auto-generated. Do not edit directly. */}
+{/* vale off */}
+
+Here's a reference for all [Cards](/studio/concepts/cards/introduction) available with the integration:
+
+### Add Note
+
+{"Adds an internal note to a Freshdesk ticket (not visible to the requester by default)."}
+
+
+
+
+ {"The Freshdesk ticket ID to add a note to."}
+
+
+ {"HTML content of the note."}
+
+
+ {"Set to false to make the note public. Defaults to true."}
+
+
+
+
+
+
+
+ {"Unique ID of the note."}
+
+
+ {"HTML content of the note."}
+
+
+ {"ISO 8601 timestamp of note creation."}
+
+
+
+
+### Create Ticket
+
+{"Creates a new ticket in Freshdesk."}
+
+
+
+
+ {"Subject of the ticket."}
+
+
+ {"HTML content of the ticket description."}
+
+
+ {"Requester email address."}
+
+
+ {"Ticket priority: \"low\", \"medium\", \"high\", or \"urgent\"."}
+
+Available options: `low`, `medium`, `high`, `urgent`
+
+
+ {"Ticket status: \"open\", \"pending\", \"resolved\", or \"closed\"."}
+
+Available options: `open`, `pending`, `resolved`, `closed`
+
+
+ {"Tags to associate with the ticket."}
+
+
+ {"Custom field key-value pairs."}
+
+
+
+
+
+
+
+ {"Unique Freshdesk ticket ID."}
+
+
+ {"Subject of the ticket."}
+
+
+ {"Ticket status."}
+
+Available options: `open`, `pending`, `resolved`, `closed`
+
+
+ {"Ticket priority."}
+
+Available options: `low`, `medium`, `high`, `urgent`
+
+
+ {"ISO 8601 timestamp of ticket creation."}
+
+
+ {"URL to view the ticket in Freshdesk."}
+
+
+
+
+### Delete Ticket
+
+{"Deletes a Freshdesk ticket. Deleted tickets can be restored from the Freshdesk UI."}
+
+
+
+
+ {"The Freshdesk ticket ID to delete."}
+
+
+
+
+
+ This Card has no output.
+
+
+### Get Contact
+
+{"Retrieves a Freshdesk contact by ID."}
+
+
+
+
+ {"The Freshdesk contact ID."}
+
+
+
+
+
+
+
+ {"Unique Freshdesk contact ID."}
+
+
+ {"Full name of the contact."}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {"ISO 8601 timestamp of contact creation."}
+
+
+
+
+### Get Ticket
+
+{"Retrieves a single Freshdesk ticket by ID."}
+
+
+
+
+ {"The Freshdesk ticket ID."}
+
+
+
+
+
+
+
+ {"Unique Freshdesk ticket ID."}
+
+
+ {"Subject of the ticket."}
+
+
+
+
+
+ {"Ticket status."}
+
+Available options: `open`, `pending`, `resolved`, `closed`
+
+
+ {"Ticket priority."}
+
+Available options: `low`, `medium`, `high`, `urgent`
+
+
+
+
+
+
+
+
+
+
+
+ {"ISO 8601 timestamp of ticket creation."}
+
+
+ {"ISO 8601 timestamp of last update."}
+
+
+
+
+
+
+
+
+
+
+### List Tickets
+
+{"Lists Freshdesk tickets with optional filters and pagination."}
+
+
+
+
+ {"Predefined filter name: new_and_my_open, watching, spam, deleted."}
+
+
+ {"Field to sort by: created_at, due_by, updated_at, status."}
+
+
+ {"Sort direction. Defaults to desc."}
+
+Available options: `asc`, `desc`
+
+
+ {"Tickets per page (max 100, default 30)."}
+
+
+ {"Token to continue from the previous page of results."}
+
+
+
+
+
+
+
+ {"List of matching tickets."}
+
+
+
+ {"Unique Freshdesk ticket ID."}
+
+
+ {"Subject of the ticket."}
+
+
+
+
+
+
+
+
+ {"Ticket status."}
+
+Available options: `open`, `pending`, `resolved`, `closed`
+
+
+ {"Ticket priority."}
+
+Available options: `low`, `medium`, `high`, `urgent`
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {"ISO 8601 timestamp of ticket creation."}
+
+
+ {"ISO 8601 timestamp of last update."}
+
+
+
+
+
+
+
+ {"Token to fetch the next page. Absent when there are no more results."}
+
+
+
+
+### Search Contacts
+
+{"Finds Freshdesk contacts by email or name."}
+
+
+
+
+ {"Filter contacts by exact email address."}
+
+
+ {"Search contacts by name prefix (case-insensitive)."}
+
+
+ {"Token to continue from the previous page of results."}
+
+
+
+
+
+
+
+ {"Matching contacts."}
+
+
+
+ {"Unique Freshdesk contact ID."}
+
+
+ {"Full name of the contact."}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {"Token to fetch the next page. Absent when there are no more results."}
+
+
+
+
+### Search Tickets
+
+{"Searches Freshdesk tickets by agent, tag, status, or priority."}
+
+
+
+
+ {"Filter by the ID of the agent the ticket is assigned to."}
+
+
+ {"Filter by a tag associated with the ticket."}
+
+
+ {"Filter by ticket status: \"open\", \"pending\", \"resolved\", or \"closed\"."}
+
+Available options: `open`, `pending`, `resolved`, `closed`
+
+
+ {"Filter by ticket priority: \"low\", \"medium\", \"high\", or \"urgent\"."}
+
+Available options: `low`, `medium`, `high`, `urgent`
+
+
+ {"Maximum number of tickets to return (default 20, max 100)."}
+
+
+ {"Token to continue from the previous page of results."}
+
+
+
+
+
+
+
+ {"Matching tickets."}
+
+
+
+ {"Unique Freshdesk ticket ID."}
+
+
+ {"Subject of the ticket."}
+
+
+ {"Ticket status."}
+
+Available options: `open`, `pending`, `resolved`, `closed`
+
+
+ {"Ticket priority."}
+
+Available options: `low`, `medium`, `high`, `urgent`
+
+
+ {"ISO 8601 timestamp of ticket creation."}
+
+
+
+
+
+
+
+ {"Token to fetch the next page. Absent when there are no more results."}
+
+
+
+
+### Update Ticket
+
+{"Updates an existing Freshdesk ticket."}
+
+
+
+
+ {"The Freshdesk ticket ID to update."}
+
+
+ {"Updated ticket status: \"open\", \"pending\", \"resolved\", or \"closed\"."}
+
+Available options: `open`, `pending`, `resolved`, `closed`
+
+
+ {"Updated ticket priority: \"low\", \"medium\", \"high\", or \"urgent\"."}
+
+Available options: `low`, `medium`, `high`, `urgent`
+
+
+ {"ID of the agent to assign the ticket to."}
+
+
+ {"ID of the group to assign the ticket to."}
+
+
+ {"Custom field key-value pairs."}
+
+
+
+
+
+
+
+ {"Unique Freshdesk ticket ID."}
+
+
+ {"Updated ticket status."}
+
+Available options: `open`, `pending`, `resolved`, `closed`
+
+
+ {"Updated ticket priority."}
+
+Available options: `low`, `medium`, `high`, `urgent`
+
+
+ {"ISO 8601 timestamp of last update."}
+
+
+
+
+
+{/* vale on */}
\ No newline at end of file
diff --git a/snippets/integrations/cards/botpress/hubspot.mdx b/snippets/integrations/cards/botpress/hubspot.mdx
index 666884c4..5f4786e8 100644
--- a/snippets/integrations/cards/botpress/hubspot.mdx
+++ b/snippets/integrations/cards/botpress/hubspot.mdx
@@ -744,6 +744,13 @@ Here's a reference for all [Cards](/studio/concepts/cards/introduction) availabl
{"The properties of the contact"}
+
+
+ {"The URL to the contact's page in the HubSpot UI"}
@@ -820,6 +827,39 @@ Here's a reference for all [Cards](/studio/concepts/cards/introduction) availabl
+### Get File URL
+
+{"Get a URL to access a file stored in Hubspot Files"}
+
+
+
+
+ {"The path to the Hubspot file"}
+
+
+
+
+
+
+
+ {"The URL of the file, or undefined if not available"}
+
+
+
+
### Get Lead
{"Get a lead from HubSpot"}
@@ -892,6 +932,178 @@ Here's a reference for all [Cards](/studio/concepts/cards/introduction) availabl
+### Get Owner
+
+{"Get a Hubspot owner (user) by ID. Used to resolve owner references on contacts, deals, etc."}
+
+
+
+
+ {"The ID of the owner to fetch"}
+
+
+
+
+
+
+
+ {"The owner found, or undefined if not found"}
+
+
+
+ {"The ID of the owner"}
+
+
+ {"The email of the owner"}
+
+
+ {"The first name of the owner"}
+
+
+ {"The last name of the owner"}
+
+
+ {"The Hubspot user ID associated with the owner"}
+
+
+ {"The type of owner (e.g. PERSON, QUEUE)"}
+
+
+ {"Whether the owner is archived"}
+
+
+ {"The date and time the owner was created"}
+
+
+ {"The date and time the owner was last updated"}
+
+
+
+
+
+
+### List Contact Properties
+
+{"List all available Hubspot contact properties with their metadata"}
+
+
+ This Card has no input fields.
+
+
+
+
+
+ {"The contact properties defined in this Hubspot account"}
+
+
+
+ {"The internal name of the property"}
+
+
+ {"The human-readable label of the property"}
+
+
+ {"The data type of the property (e.g. string, number, date, datetime, enumeration, bool)"}
+
+
+ {"The form field type of the property (e.g. text, textarea, select, radio, checkbox)"}
+
+
+ {"The internal name of the property group"}
+
+
+ {"The description of the property"}
+
+
+ {"The type of object referenced by this property (e.g. OWNER), if any"}
+
+
+
+
+
+
### List Contacts
{"List contacts in HubSpot"}
@@ -1099,6 +1311,12 @@ Here's a reference for all [Cards](/studio/concepts/cards/introduction) availabl
type="string"
>
{"The phone number of the contact to search for"}
+
+
+ {"The list of property names to fetch on the matching contact. Defaults to all properties."}
@@ -1158,6 +1376,12 @@ Here's a reference for all [Cards](/studio/concepts/cards/introduction) availabl
{"The properties of the contact"}
+
+
+ {"The URL to the contact's page in the HubSpot UI, or undefined if no contact was found"}
diff --git a/snippets/integrations/cards/botpress/jira.mdx b/snippets/integrations/cards/botpress/jira.mdx
new file mode 100644
index 00000000..d4df9633
--- /dev/null
+++ b/snippets/integrations/cards/botpress/jira.mdx
@@ -0,0 +1,1272 @@
+{/* This file is auto-generated. Do not edit directly. */}
+{/* vale off */}
+
+Here's a reference for all [Cards](/studio/concepts/cards/introduction) available with the integration:
+
+### Assign Issue
+
+{"Assign or unassign a Jira issue. Pass an account ID (find one via findUser) to assign, or null to unassign."}
+
+
+
+
+ {"Key or ID of the issue to assign (e.g. SCRUM-17)"}
+
+
+
+
+
+
+
+
+
+
+ {"Key of the issue that was assigned"}
+
+
+
+
+
+
+
+### Count Issues
+
+{"Return the approximate number of issues matching a JQL query. Cheaper than paginating searchIssues when you only need a count."}
+
+
+
+
+ {"JQL query whose matching issues should be counted"}
+
+
+
+
+
+
+
+ {"Approximate number of issues matching the JQL. Atlassian returns an estimate optimized for performance, not an exact count."}
+
+
+
+
+### Delete Issue
+
+{"Permanently delete a Jira issue. Set deleteSubtasks=true to recursively delete its subtasks; otherwise the call fails if the issue has children."}
+
+
+
+
+ {"Key or ID of the issue to delete"}
+
+
+ {"Whether to also delete subtasks of this issue (default false). If false and the issue has subtasks, the API will reject the delete."}
+
+
+
+
+
+
+
+ {"Key of the issue that was deleted"}
+
+
+
+
+### Find All Users
+
+{"List Jira users with optional pagination"}
+
+
+
+
+ {"Index of the first Jira user to return"}
+
+
+ {"Maximum number of Jira users to return (1-100)"}
+
+
+
+
+
+
+
+ {"Jira users returned by the lookup"}
+
+
+
+ {"Jira API URL for the user"}
+
+
+ {"Legacy Jira user key, when available"}
+
+
+ {"Jira account ID for the user"}
+
+
+ {"Jira account type for the user"}
+
+
+ {"Legacy Jira username, when available"}
+
+
+ {"Email address for the Jira user, when visible"}
+
+
+ {"Display name for the Jira user"}
+
+
+ {"Whether the Jira user account is active"}
+
+
+ {"User time zone configured in Jira"}
+
+
+ {"User locale configured in Jira"}
+
+
+
+
+
+
+### Find User
+
+{"Find the first Jira user matching a search query"}
+
+
+
+
+ {"Search query for a Jira user, such as a name, email, or account identifier"}
+
+
+
+
+
+
+
+ {"Jira API URL for the user"}
+
+
+ {"Legacy Jira user key, when available"}
+
+
+ {"Jira account ID for the user"}
+
+
+ {"Jira account type for the user"}
+
+
+ {"Legacy Jira username, when available"}
+
+
+ {"Email address for the Jira user, when visible"}
+
+
+ {"Display name for the Jira user"}
+
+
+ {"Whether the Jira user account is active"}
+
+
+ {"User time zone configured in Jira"}
+
+
+ {"User locale configured in Jira"}
+
+
+
+
+### Get Issue
+
+{"Fetch a single Jira issue by key or ID, including its current status, assignee, and type."}
+
+
+
+
+ {"Key or ID of the Jira issue to fetch"}
+
+
+
+
+
+
+
+ {"Jira issue key (e.g. SCRUM-17)"}
+
+
+ {"Internal Jira issue ID"}
+
+
+ {"User-facing Jira URL for the issue (https:///browse/)"}
+
+
+ {"Issue summary"}
+
+
+ {"Issue description as plain text, when available"}
+
+
+ {"Current workflow status name"}
+
+
+ {"Status category (To Do, In Progress, Done)"}
+
+
+ {"Name of the issue type"}
+
+
+ {"Priority name"}
+
+
+ {"Key of the project the issue belongs to"}
+
+
+ {"Account ID of the assigned user"}
+
+
+ {"Display name of the assigned user"}
+
+
+ {"Account ID of the reporting user"}
+
+
+ {"Display name of the reporting user"}
+
+
+ {"Issue key of the parent issue, when applicable"}
+
+
+ {"ISO timestamp of issue creation"}
+
+
+ {"ISO timestamp of last update"}
+
+
+
+
+### Get Issue Transitions
+
+{"List the workflow transitions currently available for a Jira issue. Use the returned transition ID with transitionIssue."}
+
+
+
+
+ {"Key or ID of the issue whose transitions to list"}
+
+
+
+
+
+
+
+ {"Transitions available for the issue"}
+
+
+
+ {"ID of the transition (pass to transitionIssue)"}
+
+
+ {"Display name of the transition"}
+
+
+ {"Status the issue moves to when the transition is applied"}
+
+
+ {"Status category of the target status"}
+
+
+ {"Whether the transition is currently available"}
+
+
+ {"Whether the transition shows a screen for additional fields"}
+
+
+
+
+
+
+### List Issue Types
+
+{"List all Jira issue types visible to the configured user."}
+
+
+
+
+ {"Key of the project to list issue types for (e.g. SCRUM). Issue types vary per project."}
+
+
+
+
+
+
+
+ {"Available issue types"}
+
+
+
+ {"Internal Jira issue type ID"}
+
+
+ {"Issue type name (e.g. Task, Bug, Story)"}
+
+
+ {"Issue type description"}
+
+
+ {"Whether the issue type represents a subtask"}
+
+
+ {"Hierarchy level of the issue type"}
+
+
+
+
+
+
+### List Projects
+
+{"List Jira projects visible to the configured user. Supports pagination and an optional name/key query filter."}
+
+
+
+
+ {"Optional case-insensitive substring match against project key or name"}
+
+
+ {"Pagination cursor returned from a previous call"}
+
+
+ {"Maximum number of projects per page (1-100, default 50)"}
+
+
+
+
+
+
+
+ {"Projects visible to the configured user"}
+
+
+
+ {"Internal Jira project ID"}
+
+
+ {"Project key (e.g. SCRUM)"}
+
+
+ {"Display name of the project"}
+
+
+ {"Project type (software, service_desk, business)"}
+
+
+ {"Project description"}
+
+
+ {"Account ID of the project lead"}
+
+
+ {"Display name of the project lead"}
+
+
+
+
+ {"Cursor for the next page; omitted when no more pages"}
+
+
+
+
+### List Project Statuses
+
+{"List the workflow statuses available in a Jira project, grouped per issue type."}
+
+
+
+
+ {"Key or ID of the project"}
+
+
+
+
+
+
+
+ {"Statuses grouped per issue type for the project"}
+
+
+
+ {"Internal Jira status ID"}
+
+
+ {"Status name (e.g. To Do, In Progress, Done)"}
+
+
+ {"Status description"}
+
+
+ {"Status category (To Do, In Progress, Done)"}
+
+
+ {"Issue type the status belongs to"}
+
+
+
+
+
+
+### New Issue
+
+{"Create a new issue in Jira"}
+
+
+
+
+ {"Summary of the Jira issue to create"}
+
+
+ {"Detailed description of the Jira issue"}
+
+
+ {"Name of the Jira issue type, such as Task, Story, Bug, or Epic"}
+
+
+ {"Key of the Jira project where the issue is created"}
+
+
+ {"Parent issue key when creating a sub-task"}
+
+
+ {"Jira account ID of the user assigned to the issue"}
+
+
+
+
+
+
+
+ {"Key of the Jira issue that was created"}
+
+
+
+
+### New Issues (Batch)
+
+{"Create up to 50 Jira issues in a single request. Returns both successes and errors."}
+
+
+
+
+ {"Issues to create in a single request (1-50). Jira enforces a hard limit of 50."}
+
+
+
+ {"Summary of the Jira issue to create"}
+
+
+ {"Detailed description of the Jira issue"}
+
+
+ {"Name of the Jira issue type, such as Task, Story, Bug, or Epic"}
+
+
+ {"Key of the Jira project where the issue is created"}
+
+
+ {"Parent issue key when creating a sub-task"}
+
+
+ {"Jira account ID of the user assigned to the issue"}
+
+
+
+
+
+
+
+
+
+ {"Issues that were successfully created"}
+
+
+
+ {"Key of an issue that was created"}
+
+
+
+
+ {"Errors for issues that failed to create. Empty when all issues succeeded."}
+
+
+
+ {"Index in the input array that failed"}
+
+
+ {"Error message describing why the create failed"}
+
+
+
+
+
+
+### Pick Issue
+
+{"Find Jira issues by free-text query (matches keys and summaries, ranked by relevance). Use this when the user references an issue by description rather than key."}
+
+
+
+
+ {"Free-text query Jira matches against issue keys and summaries (e.g. \"login bug\")"}
+
+
+ {"Optional JQL to restrict the search scope (e.g. \"project = SCRUM\")"}
+
+
+
+
+
+
+
+ {"Issues matching the query, ranked by relevance and flattened across picker sections"}
+
+
+
+ {"Key of the matching issue"}
+
+
+ {"Issue summary"}
+
+
+ {"Picker section this match came from (e.g. \"History Search\", \"Current Search\")"}
+
+
+
+
+
+
+### Search Issues
+
+{"Search for Jira issues using JQL. When no JQL is provided, returns issues ordered by most recently created. Supports pagination via nextToken."}
+
+
+
+
+ {"JQL query for issue search. Defaults to \"order by created DESC\" when omitted."}
+
+
+ {"Pagination cursor returned from a previous searchIssues call"}
+
+
+ {"Maximum number of issues to return per page (1-100, default 50)"}
+
+
+
+
+
+
+
+ {"Issues matching the JQL query"}
+
+
+
+ {"Jira issue key (e.g. SCRUM-17)"}
+
+
+ {"Internal Jira issue ID"}
+
+
+ {"User-facing Jira URL for the issue (https:///browse/)"}
+
+
+ {"Issue summary"}
+
+
+ {"Issue description as plain text, when available"}
+
+
+ {"Current workflow status name"}
+
+
+ {"Status category (To Do, In Progress, Done)"}
+
+
+ {"Name of the issue type"}
+
+
+ {"Priority name"}
+
+
+ {"Key of the project the issue belongs to"}
+
+
+ {"Account ID of the assigned user"}
+
+
+ {"Display name of the assigned user"}
+
+
+ {"Account ID of the reporting user"}
+
+
+ {"Display name of the reporting user"}
+
+
+ {"Issue key of the parent issue, when applicable"}
+
+
+ {"ISO timestamp of issue creation"}
+
+
+ {"ISO timestamp of last update"}
+
+
+
+
+ {"Cursor to pass as nextToken to fetch the next page; omitted when there are no more results"}
+
+
+
+
+### Transition Issue
+
+{"Apply a workflow transition to a Jira issue (for example, move it to In Progress or Done). Use getIssueTransitions to find a valid transitionId."}
+
+
+
+
+ {"Key or ID of the issue to transition"}
+
+
+ {"ID of the transition to apply. Use getIssueTransitions to list valid IDs."}
+
+
+ {"Optional comment to add to the issue as part of the transition"}
+
+
+
+
+
+
+
+ {"Key of the issue that was transitioned"}
+
+
+ {"ID of the transition that was applied"}
+
+
+
+
+### Update Issue
+
+{"Update an existing Jira issue"}
+
+
+
+
+ {"Summary of the Jira issue to create"}
+
+
+ {"Detailed description of the Jira issue"}
+
+
+ {"Name of the Jira issue type, such as Task, Story, Bug, or Epic"}
+
+
+ {"Key of the Jira project where the issue is created"}
+
+
+ {"Parent issue key when creating a sub-task"}
+
+
+ {"Jira account ID of the user assigned to the issue"}
+
+
+ {"Key of the Jira issue to update"}
+
+
+
+
+
+
+
+ {"Key of the Jira issue that was updated"}
+
+
+
+
+
+{/* vale on */}
\ No newline at end of file
diff --git a/snippets/integrations/cards/botpress/n8n.mdx b/snippets/integrations/cards/botpress/n8n.mdx
new file mode 100644
index 00000000..a501f912
--- /dev/null
+++ b/snippets/integrations/cards/botpress/n8n.mdx
@@ -0,0 +1,182 @@
+{/* This file is auto-generated. Do not edit directly. */}
+{/* vale off */}
+
+Here's a reference for all [Cards](/studio/concepts/cards/introduction) available with the integration:
+
+### Get Workflow
+
+{"Retrieves a single workflow from n8n by ID."}
+
+
+
+
+ {"The workflow ID"}
+
+
+ {"Exclude pinned data from the response"}
+
+
+
+
+
+
+
+ {"The full workflow object returned by n8n"}
+
+
+
+
+### List Workflows
+
+{"Retrieves workflows from n8n."}
+
+
+
+
+ {"Filter by workflow active state"}
+
+
+ {"Filter by workflow name"}
+
+
+ {"Comma-separated tag filter"}
+
+
+ {"Filter by project ID"}
+
+
+ {"Exclude pinned data from the response"}
+
+
+ {"Maximum number of workflows to return (1-250)"}
+
+
+ {"Pagination cursor from a previous request"}
+
+
+
+
+
+
+
+ {"List of workflows returned by n8n"}
+
+
+ {"Cursor for fetching the next page of results"}
+
+
+
+
+### Trigger Workflow
+
+{"Resolves an n8n workflow webhook and posts data to it."}
+
+
+
+
+ {"The workflow ID or name"}
+
+
+ {"The current Botpress conversation ID — use {{event.conversationId}}"}
+
+
+ {"The JSON payload to send to the workflow"}
+
+
+
+
+
+
+
+ {"The ID of the triggered workflow"}
+
+
+ {"The name of the triggered workflow"}
+
+
+ {"The response body returned by the n8n webhook"}
+
+
+
+
+
+{/* vale on */}
\ No newline at end of file
diff --git a/snippets/integrations/cards/botpress/odoo.mdx b/snippets/integrations/cards/botpress/odoo.mdx
index 3e0bd820..d032b505 100644
--- a/snippets/integrations/cards/botpress/odoo.mdx
+++ b/snippets/integrations/cards/botpress/odoo.mdx
@@ -5,7 +5,7 @@ Here's a reference for all [Cards](/studio/concepts/cards/introduction) availabl
### Create Contact
-{"Create an Odoo contact."}
+{"Create an Odoo contact. Call listContactFields first unless the needed res.partner field names were already retrieved in this conversation."}
+### Create Lead
+
+{"Create an Odoo CRM lead or opportunity. Call listLeadFields first unless the needed crm.lead field names were already retrieved in this conversation."}
+
+
+
+
+ {"Odoo CRM lead field values keyed by field name."}
+
+
+
+ {"Lead or opportunity title."}
+
+
+ {"Lead email address."}
+
+
+ {"Lead phone number."}
+
+
+ {"Lead mobile phone number."}
+
+
+ {"Name of the person associated with the lead."}
+
+
+ {"Company name associated with the lead."}
+
+
+ {"Related Odoo customer/contact ID."}
+
+
+ {"Odoo CRM stage ID."}
+
+
+ {"Assigned Odoo user ID."}
+
+
+ {"Assigned Odoo sales team ID."}
+
+
+ {"Whether the CRM record is a lead or opportunity."}
+
+Available options: `lead`, `opportunity`
+
+
+ {"Success probability percentage."}
+
+
+ {"Expected revenue for the opportunity."}
+
+
+ {"Internal notes or description for the lead."}
+
+
+ {"Referral source text."}
+
+
+ {"Odoo UTM source ID."}
+
+
+ {"Odoo UTM medium ID."}
+
+
+ {"Odoo UTM campaign ID."}
+
+
+
+
+ {"Optional Odoo context values to pass with the request."}
+
+
+
+
+
+
+
+ {"ID of the created Odoo CRM lead."}
+
+
+
+
### Delete Contacts
{"Delete one or more Odoo contacts owned by the specified Odoo user."}
@@ -81,11 +235,11 @@ Here's a reference for all [Cards](/studio/concepts/cards/introduction) availabl
>
- {"Whether all requested contacts were deleted."}
+ {"Summary of which requested contacts were deleted or not deleted."}
-### Get Odoo Contact Fields
+### Delete Leads
-{"Get available fields for Odoo contacts."}
+{"Delete one or more Odoo CRM leads owned by the specified Odoo user."}
+
+
+
+
+ {"Odoo CRM lead record IDs."}
+
+
+ {"Odoo user ID that must match each lead owner before the lead is deleted."}
+
+
+ {"Optional Odoo context values to pass with the request."}
+
+
+
+
+
+
+
+ {"Summary of which requested leads were deleted or not deleted."}
+
+
+ {"Odoo CRM lead record IDs that were deleted."}
+
+
+ {"Odoo CRM leads that could not be deleted, with the reason for each lead."}
+
+
+
+ {"Odoo CRM lead record ID."}
+
+
+ {"Odoo CRM lead display name."}
+
+
+ {"Why the lead could not be deleted."}
+
+
+
+
+
+
+### Get Current User
+
+{"Get the Odoo user ID associated with the configured API key."}
+
+
+ This Card has no input fields.
+
+
+
+
+
+ {"Odoo user ID associated with the configured API key."}
+
+
+
+
+### List Odoo Contact Fields
+
+{"List available fields for Odoo contacts. Call this before searchContacts, listContacts, createContact, or updateContacts when selecting Odoo contact field names."}
- {"Odoo field names to include in the response."}
+ {"Odoo res.partner field names to include in the response. Call listContactFields before choosing fields unless the exact field names were already retrieved in this conversation. Do not request CRM lead fields here; use searchLeads or listLeadFields for crm.lead fields."}
-### Get Contacts
+### List Contacts
-{"Read Odoo contacts by ID."}
+{"Read Odoo contacts by ID. Call listContactFields first unless the needed res.partner field names were already retrieved in this conversation."}
- {"Odoo field names to include in the response."}
+ {"Odoo res.partner field names to include in the response. Call listContactFields before choosing fields unless the exact field names were already retrieved in this conversation. Do not request CRM lead fields here; use searchLeads or listLeadFields for crm.lead fields."}
-### Get Current User
+### List Odoo Lead Fields
-{"Get the Odoo user ID associated with the configured API key."}
+{"List available fields for Odoo CRM leads. Call this before searchLeads, listLeads, createLead, or updateLeads when selecting Odoo lead field names."}
- This Card has no input fields.
+
+
+ {"Odoo crm.lead field names to include in the response. Call listLeadFields before choosing fields unless the exact field names were already retrieved in this conversation. To find which contacts are also leads, first retrieve the available contact and lead fields, then read comparable fields."}
+
+
+ {"Field metadata attributes to return, such as string, type, and required."}
+
+
+ {"Optional Odoo context values to pass with the request."}
+
+
- {"Odoo user ID associated with the configured API key."}
+ {"Field metadata keyed by Odoo lead field name."}
+
+
+
+
+### List Leads
+
+{"Read Odoo CRM leads by ID. Call listLeadFields first unless the needed crm.lead field names were already retrieved in this conversation."}
+
+
+
+
+ {"Odoo CRM lead record IDs."}
+
+
+ {"Odoo crm.lead field names to include in the response. Call listLeadFields before choosing fields unless the exact field names were already retrieved in this conversation. To find which contacts are also leads, first retrieve the available contact and lead fields, then read comparable fields."}
+
+
+ {"Optional Odoo context values to pass with the request."}
+
+
+
+
+
+
+
+ {"Requested Odoo CRM lead records."}
### Search Contacts
-{"Search Odoo contacts using an Odoo domain and optional read parameters."}
+{"Search Odoo contacts using an Odoo domain and optional read parameters. Call listContactFields first unless the needed res.partner field names were already retrieved in this conversation."}
- {"Odoo field names to include in the response."}
+ {"Odoo res.partner field names to include in the response. Call listContactFields before choosing fields unless the exact field names were already retrieved in this conversation. Do not request CRM lead fields here; use searchLeads or listLeadFields for crm.lead fields."}
+### Search Leads
+
+{"Search Odoo CRM leads using an Odoo domain and optional read parameters. Call listLeadFields first unless the needed crm.lead field names were already retrieved in this conversation."}
+
+
+
+
+ {"Odoo domain filters, such as [[\"id\", \"in\", [1, 2, 3]]]."}
+
+
+ {"Odoo crm.lead field names to include in the response. Call listLeadFields before choosing fields unless the exact field names were already retrieved in this conversation. To find which contacts are also leads, first retrieve the available contact and lead fields, then read comparable fields."}
+
+
+ {"Number of matching leads to skip."}
+
+
+ {"Maximum number of leads to return."}
+
+
+ {"Odoo order expression, such as \"name asc\"."}
+
+
+ {"Optional Odoo context values to pass with the request."}
+
+
+
+
+
+
+
+ {"Matching Odoo CRM lead records."}
+
+
+
+
### Update Contacts
-{"Update one or more Odoo contacts."}
+{"Update one or more Odoo contacts. Call listContactFields first unless the needed res.partner field names were already retrieved in this conversation."}
+ {"Odoo contact record IDs that were updated."}
+
+
+
+
+### Update Leads
+
+{"Update one or more Odoo CRM leads. Call listLeadFields first unless the needed crm.lead field names were already retrieved in this conversation."}
+
+
+
+
+ {"Odoo CRM lead record IDs."}
+
+
+ {"Odoo CRM lead field values to update, keyed by field name."}
+
+
+
+ {"Lead or opportunity title."}
+
+
+ {"Lead email address."}
+
+
+ {"Lead phone number."}
+
+
+ {"Lead mobile phone number."}
+
+
+ {"Name of the person associated with the lead."}
+
+
+ {"Company name associated with the lead."}
+
+
+ {"Related Odoo customer/contact ID."}
+
+
+ {"Odoo CRM stage ID."}
+
+
+ {"Assigned Odoo user ID."}
+
+
+ {"Assigned Odoo sales team ID."}
+
+
+ {"Whether the CRM record is a lead or opportunity."}
+
+Available options: `lead`, `opportunity`
+
+
+ {"Success probability percentage."}
+
+
+ {"Expected revenue for the opportunity."}
+
+
+ {"Internal notes or description for the lead."}
+
+
+ {"Referral source text."}
+
+
+ {"Odoo UTM source ID."}
+
+
+ {"Odoo UTM medium ID."}
+
+
+ {"Odoo UTM campaign ID."}
+
+
+
+
+ {"Optional Odoo context values to pass with the request."}
+
+
+
+
+
+
+
- {"Whether Odoo accepted the contact update."}
+ {"Odoo CRM lead record IDs that were updated."}
diff --git a/snippets/integrations/triggers/botpress/freshdesk.mdx b/snippets/integrations/triggers/botpress/freshdesk.mdx
new file mode 100644
index 00000000..5095d640
--- /dev/null
+++ b/snippets/integrations/triggers/botpress/freshdesk.mdx
@@ -0,0 +1,279 @@
+{/* This file is auto-generated. Do not edit directly. */}
+{/* vale off */}
+
+Here's a reference for all [Triggers](/studio/concepts/triggers/) available with the integration:
+
+
+
+You can access data returned from any of these Triggers by reading `event.payload` after the Trigger fires.
+
+
+
+### Ticket Created
+
+{"Triggered when a new ticket is created in Freshdesk."}
+
+
+
+
+
+
+ {"The newly created ticket."}
+
+
+
+ {"Freshdesk ticket ID."}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+### Ticket Replied
+
+{"Triggered when a customer adds a reply to a ticket."}
+
+
+
+
+
+
+ {"The ticket that received the reply."}
+
+
+
+ {"Freshdesk ticket ID."}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {"The reply that was added."}
+
+
+
+ {"HTML content of the reply."}
+
+
+ {"Plain-text content of the reply."}
+
+
+ {"Email of the customer who replied."}
+
+
+
+
+
+
+### Ticket Updated
+
+{"Triggered when a ticket is updated (status, priority, or assignment change)."}
+
+
+
+
+
+
+ {"The updated ticket."}
+
+
+
+ {"Freshdesk ticket ID."}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+{/* vale on */}
\ No newline at end of file
diff --git a/snippets/integrations/triggers/botpress/n8n.mdx b/snippets/integrations/triggers/botpress/n8n.mdx
new file mode 100644
index 00000000..c4e1fa2a
--- /dev/null
+++ b/snippets/integrations/triggers/botpress/n8n.mdx
@@ -0,0 +1,46 @@
+{/* This file is auto-generated. Do not edit directly. */}
+{/* vale off */}
+
+Here's a reference for all [Triggers](/studio/concepts/triggers/) available with the integration:
+
+
+
+You can access data returned from any of these Triggers by reading `event.payload` after the Trigger fires.
+
+
+
+### n8n event
+
+{"Triggered when n8n posts data back to Botpress."}
+
+
+
+
+
+
+ {"The ID of the workflow that posted this event"}
+
+
+ {"The name of the workflow that posted this event"}
+
+
+ {"Arbitrary data payload sent by the n8n workflow"}
+
+
+
+
+
+{/* vale on */}
\ No newline at end of file
diff --git a/snippets/integrations/versions.mdx b/snippets/integrations/versions.mdx
index 2f724c78..6df426dd 100644
--- a/snippets/integrations/versions.mdx
+++ b/snippets/integrations/versions.mdx
@@ -227,6 +227,10 @@ export const integrationVersions = {
"version": "1.5.5",
"id": "intver_01KMZAH6YY639ZNJTGDMTH25GT"
},
+ "freshdesk": {
+ "version": "0.1.0",
+ "id": "intver_01KS119QVSFXKRRWSAS7HBFTPR"
+ },
"freshsales": {
"version": "2.0.0",
"id": "intver_01JFAQWJ3CC3DJ5KG0W6XP33FD"
@@ -304,8 +308,8 @@ export const integrationVersions = {
"id": "intver_01JFAQXRQ8TADY78EBPBKSXFPC"
},
"hubspot": {
- "version": "6.0.5",
- "id": "intver_01KRPJKZ1ER9XBZQC5QTXBRGND"
+ "version": "6.0.8",
+ "id": "intver_01KS68SMDM1CRPSKMKS4HQVCAN"
},
"hunter": {
"version": "1.0.2",
@@ -323,6 +327,10 @@ export const integrationVersions = {
"version": "2.0.4",
"id": "intver_01KMZAMCN5KTKK60239ADVZGCP"
},
+ "jira": {
+ "version": "0.3.0",
+ "id": "intver_01KS11AV7YR3TBGW618FJ19NHW"
+ },
"keap": {
"version": "2.0.0",
"id": "intver_01JFAQY1A6AQGSZRPKRJ11649R"
@@ -368,8 +376,8 @@ export const integrationVersions = {
"id": "intver_01KMZAMNQDY2BZAW86RZ58VSQY"
},
"linear": {
- "version": "2.5.0",
- "id": "intver_01KRHWEFJX783DXZG4XZ7B6ER8"
+ "version": "2.5.1",
+ "id": "intver_01KS68ZXRNCXA50WQNCH85ANRK"
},
"linkedin": {
"version": "0.1.3",
@@ -423,6 +431,10 @@ export const integrationVersions = {
"version": "2.0.0",
"id": "intver_01JFAQZT1R0PR8C59Z1MHWMG83"
},
+ "n8n": {
+ "version": "0.1.0",
+ "id": "intver_01KS11BVTM54GSQWBZZC3VNKSZ"
+ },
"notion": {
"version": "3.0.5",
"id": "intver_01KN89RW8Z2ZK98F8JM8X66RXS"
@@ -432,8 +444,8 @@ export const integrationVersions = {
"id": "intver_01JFAQZYAY7HCM2VTWTZK0GHZ6"
},
"odoo": {
- "version": "0.1.0",
- "id": "intver_01KRC19AE1XTHSSW6D0FZPJZ1H"
+ "version": "1.0.0",
+ "id": "intver_01KS690Q8C0XF2FDHD15SQ1VFJ"
},
"okta": {
"version": "2.0.0",