# ActionKit for Tool Calling Source: https://docs.useparagon.com/actionkit/actionkit-for-tool-calling Use ActionKit to provide your AI agent with hundreds of Integration Actions. ActionKit is designed to give AI agents the ability to call out to integration logic as a part of a prompt or ongoing conversation with a user. The API exposes JSON Schema specs to easily provide your agent with capabilities including: * Creating tasks in Jira based on action items an agent recognizes from a meeting transcript * Querying real-time sales reports in Shopify when an agent is asked questions about online sales * Creating a Google Docs draft to start a project based on a user prompt ## Implementation Examples ### Vercel AI SDK ```js Implementing ActionKit in AI SDK expandable import { generateText, jsonSchema, tool } from "ai"; import { openai } from "@ai-sdk/openai"; const response = await fetch( "https://actionkit.useparagon.com/projects//actions", { method: "GET", headers: { Authorization: `Bearer ${paragonUserToken}`, }, } ); const { actions, errors } = await response.json(); if (errors.length === 0) { await generateText({ model: openai("gpt-4o"), tools: Object.fromEntries( actions.map((action) => [ action.function.name, tool({ description: tool.function.description, parameters: jsonSchema(tool.function.parameters), execute: async (params: any, { toolCallId }) => { try { const response = await fetch( `https://actionkit.useparagon.com/projects//actions`, { method: "POST", body: JSON.stringify({ action: tool.function.name, parameters: params, }), headers: { Authorization: `Bearer ${session.paragonUserToken}`, "Content-Type": "application/json", }, } ); const output = await response.json(); if (!response.ok) { throw new Error(JSON.stringify(output, null, 2)); } return output; } catch (err) { if (err instanceof Error) { return { error: { message: err.message } }; } return err; } }, }), ]) ), toolChoice: "auto", temperature: 0, system: "You are a helpful assistant. Be as concise as possible.", prompt: "Help me create a new task in Jira.", }); } ``` ### LangGraph / LangChain ```py Implementing ActionKit in LangChain expandable import json import requests from typing import Annotated, Any, TypedDict from langchain.tools import BaseTool from langchain.schema import HumanMessage from langgraph.graph import StateGraph, START, END from langgraph.graph.message import add_messages from langgraph.prebuilt import ToolNode, tools_condition from langchain_openai import ChatOpenAI PARAGON_PROJECT_ID = "" PARAGON_USER_TOKEN = "" OPENAI_API_KEY = "" class ActionKitTool(BaseTool): name: str description: str action_name: str paragon_token: str def _run(self, tool_input: str) -> str: try: params = json.loads(tool_input) response = requests.post( url=f"https://actionkit.useparagon.com/projects/{PARAGON_PROJECT_ID}/actions", headers={ "Authorization": f"Bearer {self.paragon_token}", "Content-Type": "application/json", }, json={ "action": self.action_name, "parameters": params, }, timeout=30 ) data = response.json() if not response.ok: raise ValueError(json.dumps(data, indent=2)) return json.dumps(data) except Exception as e: return json.dumps({"error": {"message": str(e)}}) class State(TypedDict): messages: Annotated[list, add_messages] def main(): graph_builder = StateGraph(State) url = f"https://actionkit.useparagon.com/projects/{PARAGON_PROJECT_ID}/actions" headers = {"Authorization": f"Bearer {PARAGON_USER_TOKEN}"} resp = requests.get(url, headers=headers) json_resp = resp.json() actions = json_resp.get("actions", []) errors = json_resp.get("errors", []) if not actions: print("Failed to fetch Paragon actions or encountered errors:") print(errors) return tools = [] for integration in actions: integration_actions = actions.get(integration) for action in integration_actions: func_def = action["function"] tool_name = func_def["name"] tool_description = func_def["description"] paragon_tool = ActionKitTool( name=tool_name, description=tool_description, action_name=tool_name, paragon_token=PARAGON_USER_TOKEN ) tools.append(paragon_tool) llm = ChatOpenAI( openai_api_key=OPENAI_API_KEY, model_name="o1" ) def chatbot(state: State): return {"messages": [llm.bind_tools(tools).invoke(state["messages"])]} graph_builder.add_node("chatbot", chatbot) tools_node = ToolNode(tools=tools) graph_builder.add_node("tools", tools_node) graph_builder.add_conditional_edges( "chatbot", tools_condition, ) graph_builder.add_edge("tools", "chatbot") graph_builder.add_edge(START, "chatbot") graph = graph_builder.compile() def stream_graph_updates(user_input: str): for event in graph.stream({"messages": [{"role": "user", "content": user_input}]}): for value in event.values(): print("Assistant:", value["messages"][-1].content) while True: try: user_input = input("User: ") if user_input.lower() in ["quit", "exit", "q"]: print("Goodbye!") break stream_graph_updates(user_input) except: # fallback if input() is not available user_input = "What do you know about LangGraph?" print("User: " + user_input) stream_graph_updates(user_input) break if __name__ == "__main__": main() ``` ### Other implementations If you’re not using TypeScript, you can pass the JSON Schema specs from the ActionKit to the request to your LLM. Here is an example in Python with OpenAI’s library: ```py Loading ActionKit tools for OpenAI client library expandable import requests from openai import OpenAI client = OpenAI() actions_url = f"https://actionkit.useparagon.com/projects/{project_id}/actions" actions_auth_header = { "Authorization": f"Bearer {user_token}" } get_actions_params = { "format": "json_schema", "categories": "crm,project_management" } response = requests.get(actions_url, params=params, headers=actions_auth_header) paragon_tools = response.json() messages = [{"role": "user", "content": "Help me create a Jira ticket"}] completion = client.chat.completions.create( model="gpt-4o", messages=messages, tools=paragon_tools["actions"], tool_choice="auto" ) ``` When passing the specs directly, you will also need to respond to the agent’s request to use a tool and route it to the ActionKit: ```py Calling ActionKit tools with OpenAI client library expandable message = completion["choices"][0]["message"] if message.get("function_call"): function_name = message["function_call"]["name"] arguments = json.loads(message["function_call"]["arguments"]) # Check if this tool uses ActionKit if any(tool["name"] == function_name for tool in paragon_tools["actions"]): run_actions_body = { "action": function_name, "parameters": arguments } # Run Action response = requests.post(actions_url, body=run_actions_body, headers=actions_auth_header) result = response.json() messages.append({ "role": "function", "name": function_name, "content": json.dumps(result) }) # Return to chat with tool result completion = client.chat.completions.create( model="gpt-4o", messages=messages, tools=paragon_tools, tool_choice="auto" ) ``` # Logs and Errors Source: https://docs.useparagon.com/actionkit/actionkit-logs Search, view, and trace logs for all of your ActionKit requests. ## Overview Quickly search, view, and trace through logs of your ActionKit calls in Task History. The Actions tab within Task History provides a timeline of all ActionKit usage, including all *List Actions* and *Run Action* requests. With ActionKit Logs: * Understand how your AI agent is performing ActionKit calls on behalf of your users. * Investigate why Action calls fail for particular Connected Users. * Discover which ActionKits requests your users are utilizing and the parameters used to make those requests. ActionKit Logs are currently in beta. While in beta, Logs are subject to deletion and their contents may change. ## Filtering Filters allow you to view the history of specific requests that meet criteria, including: * **User ID** * **Integration name** * **Status** * Success * Errored * **Action name** * **Trace ID** * When an ActionKit request errors, a trace or `requestId` is returned via the API response. Provide this ID to filter for the request. ```json // Sameple ActionKit error response with a requestId { "message": "{\"message\":\"Unable to update Task\",\"details\":{\"err\":\"Team not authorized\",\"ECODE\":\"OAUTH_027\"}}", "code": "41070", "status": 500, "meta": { "requestId": "4c7445d2-1972-4ed6-9e47-46053bf1d45f" } } ``` * **Date range** * Filter by the date the ActionKit request was received by Paragon. Clicking into an Action call opens a Log Trace view, which shows the underlying logs of an ActionKit call. ## Log Trace The Log Trace view shows logs from your ActionKit request. These logs display information about the initial HTTP request received by Paragon, events within Paragon's system, and any API requests made to the integration providers. With Log Trace: * Clicking into a log shows additional information such as an integration API `response` , error messages, and HTTP status codes. * The `body` of API requests are displayed only in logs classified with an *Error* severity level. All other logs do not retain the contents of the body. ## Log Behaviors and Limitations * ActionKit Logs are automatically refreshed and displayed every 60 seconds. * Each request to `POST /actions` and `GET /actions` is an ActionKit request and is assigned a unique Trace ID. * ActionKit Logs are retained for 30 days. # AI Agent Playground Source: https://docs.useparagon.com/actionkit/actionkit-playground Try ActionKit in the AI Agent Playground, a sandbox to test chatting with an agent that has access to ActionKit tools. **Get the source on GitHub** Find the source code for AI Agent Playground on our [GitHub repository](https://github.com/useparagon/actionkit-playground). ## Setup To run the AI Agent Playground locally, you will need the following: * [Node.js](https://nodejs.org/en) ≥ v22 and `pnpm` available in \$PATH ([Install instructions](https://pnpm.io/installation)) * OpenAI API Key * Paragon Project ID and [Signing Key](/getting-started/installing-the-connect-sdk#setup) You can copy your Project ID by clicking Copy Project ID under the Environment switcher: Start by cloning the source of Playground locally: ```bash git clone git@github.com:useparagon/actionkit-playground.git && cd actionkit-playground ``` Install the dependencies with pnpm: ```bash pnpm install ``` Next, create a local SQLite database by running the migration script: ```bash pnpm migrate ``` Then, copy the `.env.example` into a `.env.local` file: ```bash cp .env.example .env.local ``` In the `.env.local` file, provide your values for OPENAI\_API\_KEY, PARAGON\_SIGNING\_KEY, and NEXT\_PUBLIC\_PARAGON\_PROJECT\_ID. Finally, run Playground: ```bash pnpm dev ``` Playground will start locally on port 3000 by default. ## Using the Playground The Playground is intended to help guide development of your own integration-enabled agents. Try connecting integrations that will be relevant to your customers and iterating on system prompts that reflect the goals of the agents you are building. Here's how to start using the Playground: ### 1. Connect an account in the sidebar When you click on an integration, the [Connect Portal](/connect-portal/connect-portal-customization) will appear. In your app, you can place the Connect Portal wherever your users will find integrations. **Note**: Only [Active integrations](/getting-started/displaying-the-connect-portal#activating-the-integration) that are supported by ActionKit will appear in the sidebar. ### 2. Add Actions to the chat Once you have connected an integration account, you can add Actions to a chat by expanding the integration in the sidebar and clicking the checkmark next to the action name. In your app, you can control what Actions a chat has access to with your own application logic. ### 3. Customize system instructions Write instructions for your agent in the System Instructions input at top of the conversation. For example: "You are a sales copilot that assists users with doing research on potential prospects and allows them to update their CRM with their findings..." ### 4. Send a chat Try messaging your agent. When your agent uses a tool, a row will appear to show the tool-calling status, with input and output from the ActionKit API. To start a new chat with new context, click the top-left navigation menu and select **New chat**. You can also navigate a history of previous chats in the sidebar. ## Troubleshooting This means that your Signing Key was not correctly formatted or supplied. Make sure that you have a `.env.local` file (copied from `.env.example`) that includes a value for `PARAGON_SIGNING_KEY`. The value should be on one line, separated with `\n`. Check your browser console (Inspect Element > Console). If you are seeing 401 responses from the Paragon API, double-check the values for your `NEXT_PUBLIC_PARAGON_PROJECT_ID` and `PARAGON_SIGNING_KEY`. Verify that [ActionKit-compatible integrations](/actionkit/supported-integrations) have been added to your Paragon project and are [Active](/getting-started/displaying-the-connect-portal#activating-the-integration). Check the shell/terminal window where you are running `pnpm dev` to see any possible errors. If you are getting rate limit errors associated with your OpenAI account, the chat may stop or fail to save once the conversation reaches a certain length, or if you select too many tools at once. * **Resolution:** Keep message contents smaller in size and restrict tools to only those that are necessary to a given message. # API Reference Source: https://docs.useparagon.com/actionkit/api-reference Reference for API endpoints available in ActionKit. ## Authorization **Base URL** ```js https://actionkit.useparagon.com/projects/[Project ID] ``` ```js https://worker-actionkit.[On-Prem Base URL]/projects/[Project ID] ``` **Authentication** To authenticate to ActionKit API, present a Bearer token with the Paragon User Token (a JWT): ```js Authorization: Bearer [Paragon User Token] ``` This is the same token that you used to call `.authenticate` with the Paragon SDK. See examples in [Installing the SDK](/getting-started/installing-the-connect-sdk). ## Endpoints ### List Actions Every Connected User will have access to different Actions, depending on what Integrations you have enabled in your project and what accounts they have connected. You can list available Actions using the `GET /actions` endpoint. **The schema returned by Actions may be user-specific.** For example, if the user has custom fields defined for Salesforce Opportunities, they will appear in their version of the `SALESFORCE_CREATE_RECORD_OPPORTUNITY` Action schema. **URL** ```bash GET /actions ``` **Parameters** | Key | Description | Default | | ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------- | | **format** | The response format for available actions.

Defaults to `json_schema` for tool-calling agent use cases. Learn more about [available formats](/actionkit/schema-formats). | `json_schema` | | **limit\_to\_available** | If `true`, only `available_actions` will be returned.
Otherwise, `all_actions` will include all Actions from Integrations in your project, regardless of the accounts your user has connected. | `true` | | **reload\_fields** | If `true`, forcibly reload any custom fields that belong to the schema for included Actions. This may result in additional latency added to your request.

By default, Paragon will cache your user’s fields and refresh them periodically. Fields have a TTL of 8 hours, and `reload_fields` will immediately invalidate any cached fields. | `false` | | **integrations** | Filter by specific integrations that the user has connected. By default, all integrations are returned.
Example:
`salesforce,hubspot` | | | **categories** | Filter by specific integration categories, based on integrations the user has connected. By default, all integrations from all categories are returned.
Example:
`crm,project_management` | | **Output** | Key | Description | | ------- | ------------------------------------------------------------------------------------------------ | | actions | A map of integrations with a list of Action definitions, in the selected format. | | errors | An array of errors, if there were any problems loading Action definitions for some integrations. | ```json { "actions": { "hubspot": [{ "type": "function", "function": { "name": "HUBSPOT_CREATE_RECORD_CONTACTS", "description": "Create a contact in HubSpot CRM", "parameters": { "type": "object", "properties": { "field-email": { "type": "string", "description": "Email" }, "field-firstname": { "type": "string", "description": "First Name" }, "field-lastname": { "type": "string", "description": "Last Name" }, "field-jobtitle": { "type": "string", "description": "Job Title" }, "field-company": { "type": "string", "description": "Company Name" }, "field-hubspot_owner_id": { "type": "string", "description": "Contact Owner: The HubSpot user who is assigned to this contact. Use Connect Portal Workflow Settings to allow users to select an Owner. (example value: \\"{{settings.owner}}\\")" }, "field-lifecyclestage": { "type": "string", "description": "Lifecycle Stage: Defaults to the user’s first Lifecycle Stage if not provided. Use Connect Portal Workflow Settings to allow users to select a Lifecycle Stage. (example value: \\"{{settings.lifecycleStage}}\\")" }, "field-hs_lead_status": { "type": "string", "description": "Lead Status: Defaults to the user’s first Lead Status if not provided. Use Connect Portal Workflow Settings to allow users to select a Lead Status. (example value: \\"{{settings.leadStatus}}\\")" }, "additionalFieldsJSON": { "type": "string", "description": "Additional Fields: Specify any other fields that should be updated in JSON below. Use Connect Portal Workflow Settings to allow users to select which Contact fields to update. (example value: \\"{\\n \\"property_number\\": \\"17\\",\\n \\"property_dropdown\\": \\"choice_b\\",\\n \\"property_radio\\": \\"option_1\\",\\n \\"property_string\\": \\"value\\",\\n \\"property_date\\": \\"1572480000000\\"\\n}\\")" } }, "required": [ "recordType", "field-email" ], "additionalProperties": false, "$schema": "" } } }] }, "errors": [] } ``` ### Run Action To run an Action, call the Run Actions endpoint with the required parameters. **URL** ```bash POST /actions ``` **Request body** ```json { "action": "SLACK_SEND_MESSAGE", "parameters": { "channel": "#general", "message": "Hello world!" } } ``` Note: Responses will vary by integration provider. Paragon returns the API response of the last request that was used to run this Action. ```json { "ok": true, "channel": "CSQCUNXBP", "ts": "1739896301.418839", "message": { "user": "U0101SYAC07", "type": "message", "ts": "1739896301.418839", "bot_id": "B0101SYAB3R", "app_id": "A01001G1G7J", "text": "test", "team": "TM7FL705V", "bot_profile": { "id": "B0101SYAB3R", "app_id": "A01001G1G7J", "name": "Paragon", "icons": { "image_36": "https://avatars.slack-edge.com/2020-03-24/1022919802484_c4af0a8de9e9c25f4b58_36.png", "image_48": "https://avatars.slack-edge.com/2020-03-24/1022919802484_c4af0a8de9e9c25f4b58_48.png", "image_72": "https://avatars.slack-edge.com/2020-03-24/1022919802484_c4af0a8de9e9c25f4b58_72.png" }, "deleted": false, "updated": 1587073960, "team_id": "TM7FL705V" }, "blocks": [ { "type": "section", "block_id": "iAHFB", "text": { "type": "mrkdwn", "text": "test", "verbatim": false } } ] }, "response_metadata": { "scopes": [ "app_mentions:read", "chat:write", "chat:write.public", "channels:read", "reactions:write", "chat:write.customize", "im:read", "im:write", "users:read", "groups:read", "channels:manage", "groups:write", "mpim:write", "team:read", "channels:history", "users:read.email", "files:read", "files:write" ], "acceptedScopes": [ "chat:write" ] } } ``` ```json { "message": "Your authorization token has expired.", "code": "7203", "status": 401, "meta": { "projectId": "ddcd1f1a-440d-4d48-97ab-44878b77f800" } } ``` # Getting Started Source: https://docs.useparagon.com/actionkit/getting-started Get started with the ActionKit API. **Need help getting started with ActionKit?** Schedule a personalized onboarding with our Product team [here](https://useparagon.com/book-demo-actionkit). To use ActionKit, you will need to have set up the following: ### 1. Add the Paragon SDK to your app See [Installing the SDK](/getting-started/installing-the-connect-sdk) for adding the Paragon SDK to your app. With the SDK, you can prompt users to connect their accounts inside of your app using the [Connect Portal](/connect-portal/connect-portal-customization). Alternatively, you can use one of the below options for testing or development purposes: * [Hosted Demo Environment](/demo): an in-browser implementation of the SDK to test connecting accounts to your integrations * [ActionKit Playground](/actionkit/actionkit-playground): an open-source sandbox to test chatting with an agent that has access to ActionKit tools ### 2. Activate an integration in your Paragon project You can add and configure an integration by visiting the Catalog page in your Paragon dashboard (see [Adding Integrations](/getting-started/adding-an-integration)). See [Supported Integrations](/actionkit/supported-integrations) for integrations currently supported in ActionKit. ### 3. Connect an account Use your app (or Playground or demo.useparagon.com) to connect an account (e.g. a Salesforce account) using the Connect Portal. If you are having issues connecting an account, you may need to add your own OAuth app credentials. See [Connect your developer app to Paragon](/getting-started/adding-an-integration#connect-your-developer-app-to-paragon). Once an account is connected, you can start testing [the ActionKit API](/actionkit/api-reference) with the user ID that you are testing with. If you are running the Playground locally, the ID is `playground.local-static-user`. ## Usage ActionKit is available as an API, so you can use it directly from your app or with any LLM that supports tool/function calling: See all available API endpoints in ActionKit ActionKit is also available as a self-hosted MCP for AI agent implementations. Learn more in the [open-source repo](https://github.com/useparagon/paragon-mcp). # Experience Manager Create Asset Rendition Source: https://docs.useparagon.com/actionkit/integrations/adobeexperiencemanager/ADOBE_EXPERIENCE_MANAGER_CREATE_ASSET_RENDITION actionkit/openapi.json post /projects/{project_id}/actions/#ADOBE_EXPERIENCE_MANAGER_CREATE_ASSET_RENDITION # Experience Manager Create Folder Source: https://docs.useparagon.com/actionkit/integrations/adobeexperiencemanager/ADOBE_EXPERIENCE_MANAGER_CREATE_FOLDER actionkit/openapi.json post /projects/{project_id}/actions/#ADOBE_EXPERIENCE_MANAGER_CREATE_FOLDER # Experience Manager Delete Asset Source: https://docs.useparagon.com/actionkit/integrations/adobeexperiencemanager/ADOBE_EXPERIENCE_MANAGER_DELETE_ASSET actionkit/openapi.json post /projects/{project_id}/actions/#ADOBE_EXPERIENCE_MANAGER_DELETE_ASSET # Experience Manager Delete Asset Rendition Source: https://docs.useparagon.com/actionkit/integrations/adobeexperiencemanager/ADOBE_EXPERIENCE_MANAGER_DELETE_ASSET_RENDITION actionkit/openapi.json post /projects/{project_id}/actions/#ADOBE_EXPERIENCE_MANAGER_DELETE_ASSET_RENDITION # Experience Manager Delete Folder Source: https://docs.useparagon.com/actionkit/integrations/adobeexperiencemanager/ADOBE_EXPERIENCE_MANAGER_DELETE_FOLDER actionkit/openapi.json post /projects/{project_id}/actions/#ADOBE_EXPERIENCE_MANAGER_DELETE_FOLDER # Experience Manager Update Asset Rendition Source: https://docs.useparagon.com/actionkit/integrations/adobeexperiencemanager/ADOBE_EXPERIENCE_MANAGER_UPDATE_ASSET_RENDITION actionkit/openapi.json post /projects/{project_id}/actions/#ADOBE_EXPERIENCE_MANAGER_UPDATE_ASSET_RENDITION # Add Task To Section Source: https://docs.useparagon.com/actionkit/integrations/asana/ASANA_ADD_TASK_TO_SECTION actionkit/openapi.json post /projects/{project_id}/actions/#ASANA_ADD_TASK_TO_SECTION # Create Comment Source: https://docs.useparagon.com/actionkit/integrations/asana/ASANA_CREATE_COMMENT actionkit/openapi.json post /projects/{project_id}/actions/#ASANA_CREATE_COMMENT # Create Project Source: https://docs.useparagon.com/actionkit/integrations/asana/ASANA_CREATE_PROJECT actionkit/openapi.json post /projects/{project_id}/actions/#ASANA_CREATE_PROJECT # Create Task Source: https://docs.useparagon.com/actionkit/integrations/asana/ASANA_CREATE_TASK actionkit/openapi.json post /projects/{project_id}/actions/#ASANA_CREATE_TASK # Get Projects Source: https://docs.useparagon.com/actionkit/integrations/asana/ASANA_GET_PROJECTS actionkit/openapi.json post /projects/{project_id}/actions/#ASANA_GET_PROJECTS # Get Project By ID Source: https://docs.useparagon.com/actionkit/integrations/asana/ASANA_GET_PROJECT_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#ASANA_GET_PROJECT_BY_ID # Get Tasks Source: https://docs.useparagon.com/actionkit/integrations/asana/ASANA_GET_TASKS actionkit/openapi.json post /projects/{project_id}/actions/#ASANA_GET_TASKS # Get Tasks By ID Source: https://docs.useparagon.com/actionkit/integrations/asana/ASANA_GET_TASKS_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#ASANA_GET_TASKS_BY_ID # Get Task By External ID Source: https://docs.useparagon.com/actionkit/integrations/asana/ASANA_GET_TASK_BY_EXTERNAL_ID actionkit/openapi.json post /projects/{project_id}/actions/#ASANA_GET_TASK_BY_EXTERNAL_ID # Get Teams Source: https://docs.useparagon.com/actionkit/integrations/asana/ASANA_GET_TEAMS actionkit/openapi.json post /projects/{project_id}/actions/#ASANA_GET_TEAMS # Get Workspaces Source: https://docs.useparagon.com/actionkit/integrations/asana/ASANA_GET_WORKSPACES actionkit/openapi.json post /projects/{project_id}/actions/#ASANA_GET_WORKSPACES # Update Task Source: https://docs.useparagon.com/actionkit/integrations/asana/ASANA_UPDATE_TASK actionkit/openapi.json post /projects/{project_id}/actions/#ASANA_UPDATE_TASK # Devops Create Workitem Source: https://docs.useparagon.com/actionkit/integrations/azuredevops/AZURE_DEVOPS_CREATE_WORKITEM actionkit/openapi.json post /projects/{project_id}/actions/#AZURE_DEVOPS_CREATE_WORKITEM # Devops Delete Workitem Source: https://docs.useparagon.com/actionkit/integrations/azuredevops/AZURE_DEVOPS_DELETE_WORKITEM actionkit/openapi.json post /projects/{project_id}/actions/#AZURE_DEVOPS_DELETE_WORKITEM # Devops Search Workitems Source: https://docs.useparagon.com/actionkit/integrations/azuredevops/AZURE_DEVOPS_SEARCH_WORKITEMS actionkit/openapi.json post /projects/{project_id}/actions/#AZURE_DEVOPS_SEARCH_WORKITEMS # Devops Update Workitem Source: https://docs.useparagon.com/actionkit/integrations/azuredevops/AZURE_DEVOPS_UPDATE_WORKITEM actionkit/openapi.json post /projects/{project_id}/actions/#AZURE_DEVOPS_UPDATE_WORKITEM # Hr Add List Field Value Source: https://docs.useparagon.com/actionkit/integrations/bamboohr/BAMBOO_HR_ADD_LIST_FIELD_VALUE actionkit/openapi.json post /projects/{project_id}/actions/#BAMBOO_HR_ADD_LIST_FIELD_VALUE # Hr Adjust Time Off Balance For Employee Source: https://docs.useparagon.com/actionkit/integrations/bamboohr/BAMBOO_HR_ADJUST_TIME_OFF_BALANCE_FOR_EMPLOYEE actionkit/openapi.json post /projects/{project_id}/actions/#BAMBOO_HR_ADJUST_TIME_OFF_BALANCE_FOR_EMPLOYEE # Hr Change Request Status Source: https://docs.useparagon.com/actionkit/integrations/bamboohr/BAMBOO_HR_CHANGE_REQUEST_STATUS actionkit/openapi.json post /projects/{project_id}/actions/#BAMBOO_HR_CHANGE_REQUEST_STATUS # Hr Create Employee Source: https://docs.useparagon.com/actionkit/integrations/bamboohr/BAMBOO_HR_CREATE_EMPLOYEE actionkit/openapi.json post /projects/{project_id}/actions/#BAMBOO_HR_CREATE_EMPLOYEE # Hr Create Time Off Request Source: https://docs.useparagon.com/actionkit/integrations/bamboohr/BAMBOO_HR_CREATE_TIME_OFF_REQUEST actionkit/openapi.json post /projects/{project_id}/actions/#BAMBOO_HR_CREATE_TIME_OFF_REQUEST # Hr Get Employee By ID Source: https://docs.useparagon.com/actionkit/integrations/bamboohr/BAMBOO_HR_GET_EMPLOYEE_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#BAMBOO_HR_GET_EMPLOYEE_BY_ID # Hr Get Employee Directory Source: https://docs.useparagon.com/actionkit/integrations/bamboohr/BAMBOO_HR_GET_EMPLOYEE_DIRECTORY actionkit/openapi.json post /projects/{project_id}/actions/#BAMBOO_HR_GET_EMPLOYEE_DIRECTORY # Hr Get Field List Source: https://docs.useparagon.com/actionkit/integrations/bamboohr/BAMBOO_HR_GET_FIELD_LIST actionkit/openapi.json post /projects/{project_id}/actions/#BAMBOO_HR_GET_FIELD_LIST # Hr Get Time Off Requests For Employee Source: https://docs.useparagon.com/actionkit/integrations/bamboohr/BAMBOO_HR_GET_TIME_OFF_REQUESTS_FOR_EMPLOYEE actionkit/openapi.json post /projects/{project_id}/actions/#BAMBOO_HR_GET_TIME_OFF_REQUESTS_FOR_EMPLOYEE # Hr Get Time Off Types Source: https://docs.useparagon.com/actionkit/integrations/bamboohr/BAMBOO_HR_GET_TIME_OFF_TYPES actionkit/openapi.json post /projects/{project_id}/actions/#BAMBOO_HR_GET_TIME_OFF_TYPES # Hr Update Employee Source: https://docs.useparagon.com/actionkit/integrations/bamboohr/BAMBOO_HR_UPDATE_EMPLOYEE actionkit/openapi.json post /projects/{project_id}/actions/#BAMBOO_HR_UPDATE_EMPLOYEE # Create Folder Source: https://docs.useparagon.com/actionkit/integrations/box/BOX_CREATE_FOLDER actionkit/openapi.json post /projects/{project_id}/actions/#BOX_CREATE_FOLDER # Delete Folder Source: https://docs.useparagon.com/actionkit/integrations/box/BOX_DELETE_FOLDER actionkit/openapi.json post /projects/{project_id}/actions/#BOX_DELETE_FOLDER # Get File By ID Source: https://docs.useparagon.com/actionkit/integrations/box/BOX_GET_FILE_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#BOX_GET_FILE_BY_ID # Get Folder By ID Source: https://docs.useparagon.com/actionkit/integrations/box/BOX_GET_FOLDER_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#BOX_GET_FOLDER_BY_ID # List Files Source: https://docs.useparagon.com/actionkit/integrations/box/BOX_LIST_FILES actionkit/openapi.json post /projects/{project_id}/actions/#BOX_LIST_FILES # Move Folder Source: https://docs.useparagon.com/actionkit/integrations/box/BOX_MOVE_FOLDER actionkit/openapi.json post /projects/{project_id}/actions/#BOX_MOVE_FOLDER # Save File Source: https://docs.useparagon.com/actionkit/integrations/box/BOX_SAVE_FILE actionkit/openapi.json post /projects/{project_id}/actions/#BOX_SAVE_FILE # Save File From Object Source: https://docs.useparagon.com/actionkit/integrations/box/BOX_SAVE_FILE_FROM_OBJECT actionkit/openapi.json post /projects/{project_id}/actions/#BOX_SAVE_FILE_FROM_OBJECT # Search Folders Source: https://docs.useparagon.com/actionkit/integrations/box/BOX_SEARCH_FOLDERS actionkit/openapi.json post /projects/{project_id}/actions/#BOX_SEARCH_FOLDERS # Cancel Event Source: https://docs.useparagon.com/actionkit/integrations/calendly/CALENDLY_CANCEL_EVENT actionkit/openapi.json post /projects/{project_id}/actions/#CALENDLY_CANCEL_EVENT # Get Available Times For Event Type Source: https://docs.useparagon.com/actionkit/integrations/calendly/CALENDLY_GET_AVAILABLE_TIMES_FOR_EVENT_TYPE actionkit/openapi.json post /projects/{project_id}/actions/#CALENDLY_GET_AVAILABLE_TIMES_FOR_EVENT_TYPE # Get Event By ID Source: https://docs.useparagon.com/actionkit/integrations/calendly/CALENDLY_GET_EVENT_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#CALENDLY_GET_EVENT_BY_ID # Get Event Invitees Source: https://docs.useparagon.com/actionkit/integrations/calendly/CALENDLY_GET_EVENT_INVITEES actionkit/openapi.json post /projects/{project_id}/actions/#CALENDLY_GET_EVENT_INVITEES # Get Event Types Source: https://docs.useparagon.com/actionkit/integrations/calendly/CALENDLY_GET_EVENT_TYPES actionkit/openapi.json post /projects/{project_id}/actions/#CALENDLY_GET_EVENT_TYPES # Search Events Source: https://docs.useparagon.com/actionkit/integrations/calendly/CALENDLY_SEARCH_EVENTS actionkit/openapi.json post /projects/{project_id}/actions/#CALENDLY_SEARCH_EVENTS # Create Task Source: https://docs.useparagon.com/actionkit/integrations/clickup/CLICKUP_CREATE_TASK actionkit/openapi.json post /projects/{project_id}/actions/#CLICKUP_CREATE_TASK # Delete Task Source: https://docs.useparagon.com/actionkit/integrations/clickup/CLICKUP_DELETE_TASK actionkit/openapi.json post /projects/{project_id}/actions/#CLICKUP_DELETE_TASK # Get All Fields In List Source: https://docs.useparagon.com/actionkit/integrations/clickup/CLICKUP_GET_ALL_FIELDS_IN_LIST actionkit/openapi.json post /projects/{project_id}/actions/#CLICKUP_GET_ALL_FIELDS_IN_LIST # Get Custom Fields In List Source: https://docs.useparagon.com/actionkit/integrations/clickup/CLICKUP_GET_CUSTOM_FIELDS_IN_LIST actionkit/openapi.json post /projects/{project_id}/actions/#CLICKUP_GET_CUSTOM_FIELDS_IN_LIST # Get Folders Source: https://docs.useparagon.com/actionkit/integrations/clickup/CLICKUP_GET_FOLDERS actionkit/openapi.json post /projects/{project_id}/actions/#CLICKUP_GET_FOLDERS # Get List Source: https://docs.useparagon.com/actionkit/integrations/clickup/CLICKUP_GET_LIST actionkit/openapi.json post /projects/{project_id}/actions/#CLICKUP_GET_LIST # Get Member Source: https://docs.useparagon.com/actionkit/integrations/clickup/CLICKUP_GET_MEMBER actionkit/openapi.json post /projects/{project_id}/actions/#CLICKUP_GET_MEMBER # Get Space Source: https://docs.useparagon.com/actionkit/integrations/clickup/CLICKUP_GET_SPACE actionkit/openapi.json post /projects/{project_id}/actions/#CLICKUP_GET_SPACE # Get Task In List Source: https://docs.useparagon.com/actionkit/integrations/clickup/CLICKUP_GET_TASK_IN_LIST actionkit/openapi.json post /projects/{project_id}/actions/#CLICKUP_GET_TASK_IN_LIST # Search Tasks Source: https://docs.useparagon.com/actionkit/integrations/clickup/CLICKUP_SEARCH_TASKS actionkit/openapi.json post /projects/{project_id}/actions/#CLICKUP_SEARCH_TASKS # Update Task Source: https://docs.useparagon.com/actionkit/integrations/clickup/CLICKUP_UPDATE_TASK actionkit/openapi.json post /projects/{project_id}/actions/#CLICKUP_UPDATE_TASK # Create Document Source: https://docs.useparagon.com/actionkit/integrations/coda/CODA_CREATE_DOCUMENT actionkit/openapi.json post /projects/{project_id}/actions/#CODA_CREATE_DOCUMENT # Delete Document Source: https://docs.useparagon.com/actionkit/integrations/coda/CODA_DELETE_DOCUMENT actionkit/openapi.json post /projects/{project_id}/actions/#CODA_DELETE_DOCUMENT # Get Document By ID Source: https://docs.useparagon.com/actionkit/integrations/coda/CODA_GET_DOCUMENT_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#CODA_GET_DOCUMENT_BY_ID # Get Table By ID Source: https://docs.useparagon.com/actionkit/integrations/coda/CODA_GET_TABLE_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#CODA_GET_TABLE_BY_ID # Search Documents Source: https://docs.useparagon.com/actionkit/integrations/coda/CODA_SEARCH_DOCUMENTS actionkit/openapi.json post /projects/{project_id}/actions/#CODA_SEARCH_DOCUMENTS # Search Tables Source: https://docs.useparagon.com/actionkit/integrations/coda/CODA_SEARCH_TABLES actionkit/openapi.json post /projects/{project_id}/actions/#CODA_SEARCH_TABLES # Create Page Source: https://docs.useparagon.com/actionkit/integrations/confluence/CONFLUENCE_CREATE_PAGE actionkit/openapi.json post /projects/{project_id}/actions/#CONFLUENCE_CREATE_PAGE # Delete Page Source: https://docs.useparagon.com/actionkit/integrations/confluence/CONFLUENCE_DELETE_PAGE actionkit/openapi.json post /projects/{project_id}/actions/#CONFLUENCE_DELETE_PAGE # Get Blog Posts Source: https://docs.useparagon.com/actionkit/integrations/confluence/CONFLUENCE_GET_BLOG_POSTS actionkit/openapi.json post /projects/{project_id}/actions/#CONFLUENCE_GET_BLOG_POSTS # Get Pages By Label Source: https://docs.useparagon.com/actionkit/integrations/confluence/CONFLUENCE_GET_PAGES_BY_LABEL actionkit/openapi.json post /projects/{project_id}/actions/#CONFLUENCE_GET_PAGES_BY_LABEL # Get Pages In Space Source: https://docs.useparagon.com/actionkit/integrations/confluence/CONFLUENCE_GET_PAGES_IN_SPACE actionkit/openapi.json post /projects/{project_id}/actions/#CONFLUENCE_GET_PAGES_IN_SPACE # Get Page By ID Source: https://docs.useparagon.com/actionkit/integrations/confluence/CONFLUENCE_GET_PAGE_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#CONFLUENCE_GET_PAGE_BY_ID # Get Space By ID Source: https://docs.useparagon.com/actionkit/integrations/confluence/CONFLUENCE_GET_SPACE_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#CONFLUENCE_GET_SPACE_BY_ID # Search Pages Source: https://docs.useparagon.com/actionkit/integrations/confluence/CONFLUENCE_SEARCH_PAGES actionkit/openapi.json post /projects/{project_id}/actions/#CONFLUENCE_SEARCH_PAGES # Search Spaces Source: https://docs.useparagon.com/actionkit/integrations/confluence/CONFLUENCE_SEARCH_SPACES actionkit/openapi.json post /projects/{project_id}/actions/#CONFLUENCE_SEARCH_SPACES # Update Page Source: https://docs.useparagon.com/actionkit/integrations/confluence/CONFLUENCE_UPDATE_PAGE actionkit/openapi.json post /projects/{project_id}/actions/#CONFLUENCE_UPDATE_PAGE # Create An Envelope Source: https://docs.useparagon.com/actionkit/integrations/docusign/DOCUSIGN_CREATE_AN_ENVELOPE actionkit/openapi.json post /projects/{project_id}/actions/#DOCUSIGN_CREATE_AN_ENVELOPE # Envelope Custom Field Source: https://docs.useparagon.com/actionkit/integrations/docusign/DOCUSIGN_ENVELOPE_CUSTOM_FIELD actionkit/openapi.json post /projects/{project_id}/actions/#DOCUSIGN_ENVELOPE_CUSTOM_FIELD # Get Envelope By ID Source: https://docs.useparagon.com/actionkit/integrations/docusign/DOCUSIGN_GET_ENVELOPE_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#DOCUSIGN_GET_ENVELOPE_BY_ID # Search Envelopes Source: https://docs.useparagon.com/actionkit/integrations/docusign/DOCUSIGN_SEARCH_ENVELOPES actionkit/openapi.json post /projects/{project_id}/actions/#DOCUSIGN_SEARCH_ENVELOPES # Send An Envelope Source: https://docs.useparagon.com/actionkit/integrations/docusign/DOCUSIGN_SEND_AN_ENVELOPE actionkit/openapi.json post /projects/{project_id}/actions/#DOCUSIGN_SEND_AN_ENVELOPE # Update Envelope Source: https://docs.useparagon.com/actionkit/integrations/docusign/DOCUSIGN_UPDATE_ENVELOPE actionkit/openapi.json post /projects/{project_id}/actions/#DOCUSIGN_UPDATE_ENVELOPE # Create Folder Source: https://docs.useparagon.com/actionkit/integrations/dropbox/DROPBOX_CREATE_FOLDER actionkit/openapi.json post /projects/{project_id}/actions/#DROPBOX_CREATE_FOLDER # Delete Folder Source: https://docs.useparagon.com/actionkit/integrations/dropbox/DROPBOX_DELETE_FOLDER actionkit/openapi.json post /projects/{project_id}/actions/#DROPBOX_DELETE_FOLDER # Get Folder By ID Source: https://docs.useparagon.com/actionkit/integrations/dropbox/DROPBOX_GET_FOLDER_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#DROPBOX_GET_FOLDER_BY_ID # List Files Source: https://docs.useparagon.com/actionkit/integrations/dropbox/DROPBOX_LIST_FILES actionkit/openapi.json post /projects/{project_id}/actions/#DROPBOX_LIST_FILES # Move Folder Source: https://docs.useparagon.com/actionkit/integrations/dropbox/DROPBOX_MOVE_FOLDER actionkit/openapi.json post /projects/{project_id}/actions/#DROPBOX_MOVE_FOLDER # Search Folders Source: https://docs.useparagon.com/actionkit/integrations/dropbox/DROPBOX_SEARCH_FOLDERS actionkit/openapi.json post /projects/{project_id}/actions/#DROPBOX_SEARCH_FOLDERS # Sign Cancel Incomplete Signature Request Source: https://docs.useparagon.com/actionkit/integrations/dropboxsign/DROPBOX_SIGN_CANCEL_INCOMPLETE_SIGNATURE_REQUEST actionkit/openapi.json post /projects/{project_id}/actions/#DROPBOX_SIGN_CANCEL_INCOMPLETE_SIGNATURE_REQUEST # Sign Create And Send Signature Request Source: https://docs.useparagon.com/actionkit/integrations/dropboxsign/DROPBOX_SIGN_CREATE_AND_SEND_SIGNATURE_REQUEST actionkit/openapi.json post /projects/{project_id}/actions/#DROPBOX_SIGN_CREATE_AND_SEND_SIGNATURE_REQUEST # Sign Get Signature Request By ID Source: https://docs.useparagon.com/actionkit/integrations/dropboxsign/DROPBOX_SIGN_GET_SIGNATURE_REQUEST_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#DROPBOX_SIGN_GET_SIGNATURE_REQUEST_BY_ID # Sign Search Signature Requests Source: https://docs.useparagon.com/actionkit/integrations/dropboxsign/DROPBOX_SIGN_SEARCH_SIGNATURE_REQUESTS actionkit/openapi.json post /projects/{project_id}/actions/#DROPBOX_SIGN_SEARCH_SIGNATURE_REQUESTS # Sign Update Signature Request Source: https://docs.useparagon.com/actionkit/integrations/dropboxsign/DROPBOX_SIGN_UPDATE_SIGNATURE_REQUEST actionkit/openapi.json post /projects/{project_id}/actions/#DROPBOX_SIGN_UPDATE_SIGNATURE_REQUEST # Business Central Create Payment Term Source: https://docs.useparagon.com/actionkit/integrations/dynamicsbusinesscentral/DYNAMICS_BUSINESS_CENTRAL_CREATE_PAYMENT_TERM actionkit/openapi.json post /projects/{project_id}/actions/#DYNAMICS_BUSINESS_CENTRAL_CREATE_PAYMENT_TERM # Business Central Create Purchase Invoice Source: https://docs.useparagon.com/actionkit/integrations/dynamicsbusinesscentral/DYNAMICS_BUSINESS_CENTRAL_CREATE_PURCHASE_INVOICE actionkit/openapi.json post /projects/{project_id}/actions/#DYNAMICS_BUSINESS_CENTRAL_CREATE_PURCHASE_INVOICE # Business Central Create Purchase Invoice Line Item Source: https://docs.useparagon.com/actionkit/integrations/dynamicsbusinesscentral/DYNAMICS_BUSINESS_CENTRAL_CREATE_PURCHASE_INVOICE_LINE_ITEM actionkit/openapi.json post /projects/{project_id}/actions/#DYNAMICS_BUSINESS_CENTRAL_CREATE_PURCHASE_INVOICE_LINE_ITEM # Business Central Create Tax Group Source: https://docs.useparagon.com/actionkit/integrations/dynamicsbusinesscentral/DYNAMICS_BUSINESS_CENTRAL_CREATE_TAX_GROUP actionkit/openapi.json post /projects/{project_id}/actions/#DYNAMICS_BUSINESS_CENTRAL_CREATE_TAX_GROUP # Business Central Create Vendor Source: https://docs.useparagon.com/actionkit/integrations/dynamicsbusinesscentral/DYNAMICS_BUSINESS_CENTRAL_CREATE_VENDOR actionkit/openapi.json post /projects/{project_id}/actions/#DYNAMICS_BUSINESS_CENTRAL_CREATE_VENDOR # Business Central Delete Payment Term Source: https://docs.useparagon.com/actionkit/integrations/dynamicsbusinesscentral/DYNAMICS_BUSINESS_CENTRAL_DELETE_PAYMENT_TERM actionkit/openapi.json post /projects/{project_id}/actions/#DYNAMICS_BUSINESS_CENTRAL_DELETE_PAYMENT_TERM # Business Central Delete Purchase Invoice Source: https://docs.useparagon.com/actionkit/integrations/dynamicsbusinesscentral/DYNAMICS_BUSINESS_CENTRAL_DELETE_PURCHASE_INVOICE actionkit/openapi.json post /projects/{project_id}/actions/#DYNAMICS_BUSINESS_CENTRAL_DELETE_PURCHASE_INVOICE # Business Central Delete Purchase Invoice Line Item Source: https://docs.useparagon.com/actionkit/integrations/dynamicsbusinesscentral/DYNAMICS_BUSINESS_CENTRAL_DELETE_PURCHASE_INVOICE_LINE_ITEM actionkit/openapi.json post /projects/{project_id}/actions/#DYNAMICS_BUSINESS_CENTRAL_DELETE_PURCHASE_INVOICE_LINE_ITEM # Business Central Delete Tax Group Source: https://docs.useparagon.com/actionkit/integrations/dynamicsbusinesscentral/DYNAMICS_BUSINESS_CENTRAL_DELETE_TAX_GROUP actionkit/openapi.json post /projects/{project_id}/actions/#DYNAMICS_BUSINESS_CENTRAL_DELETE_TAX_GROUP # Business Central Delete Vendor Source: https://docs.useparagon.com/actionkit/integrations/dynamicsbusinesscentral/DYNAMICS_BUSINESS_CENTRAL_DELETE_VENDOR actionkit/openapi.json post /projects/{project_id}/actions/#DYNAMICS_BUSINESS_CENTRAL_DELETE_VENDOR # Business Central Get Accounts Source: https://docs.useparagon.com/actionkit/integrations/dynamicsbusinesscentral/DYNAMICS_BUSINESS_CENTRAL_GET_ACCOUNTS actionkit/openapi.json post /projects/{project_id}/actions/#DYNAMICS_BUSINESS_CENTRAL_GET_ACCOUNTS # Business Central Get Account By ID Source: https://docs.useparagon.com/actionkit/integrations/dynamicsbusinesscentral/DYNAMICS_BUSINESS_CENTRAL_GET_ACCOUNT_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#DYNAMICS_BUSINESS_CENTRAL_GET_ACCOUNT_BY_ID # Business Central Get Payment Term By ID Source: https://docs.useparagon.com/actionkit/integrations/dynamicsbusinesscentral/DYNAMICS_BUSINESS_CENTRAL_GET_PAYMENT_TERM_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#DYNAMICS_BUSINESS_CENTRAL_GET_PAYMENT_TERM_BY_ID # Business Central Get Purchase Invoice By ID Source: https://docs.useparagon.com/actionkit/integrations/dynamicsbusinesscentral/DYNAMICS_BUSINESS_CENTRAL_GET_PURCHASE_INVOICE_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#DYNAMICS_BUSINESS_CENTRAL_GET_PURCHASE_INVOICE_BY_ID # Business Central Get Purchase Invoice Lines Source: https://docs.useparagon.com/actionkit/integrations/dynamicsbusinesscentral/DYNAMICS_BUSINESS_CENTRAL_GET_PURCHASE_INVOICE_LINES actionkit/openapi.json post /projects/{project_id}/actions/#DYNAMICS_BUSINESS_CENTRAL_GET_PURCHASE_INVOICE_LINES # Business Central Get Purchase Invoice Line Item By ID Source: https://docs.useparagon.com/actionkit/integrations/dynamicsbusinesscentral/DYNAMICS_BUSINESS_CENTRAL_GET_PURCHASE_INVOICE_LINE_ITEM_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#DYNAMICS_BUSINESS_CENTRAL_GET_PURCHASE_INVOICE_LINE_ITEM_BY_ID # Business Central Get Tax Group By ID Source: https://docs.useparagon.com/actionkit/integrations/dynamicsbusinesscentral/DYNAMICS_BUSINESS_CENTRAL_GET_TAX_GROUP_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#DYNAMICS_BUSINESS_CENTRAL_GET_TAX_GROUP_BY_ID # Business Central Get Vendor By ID Source: https://docs.useparagon.com/actionkit/integrations/dynamicsbusinesscentral/DYNAMICS_BUSINESS_CENTRAL_GET_VENDOR_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#DYNAMICS_BUSINESS_CENTRAL_GET_VENDOR_BY_ID # Business Central Post Purchase Invoice Source: https://docs.useparagon.com/actionkit/integrations/dynamicsbusinesscentral/DYNAMICS_BUSINESS_CENTRAL_POST_PURCHASE_INVOICE actionkit/openapi.json post /projects/{project_id}/actions/#DYNAMICS_BUSINESS_CENTRAL_POST_PURCHASE_INVOICE # Business Central Search For Purchase Invoice Source: https://docs.useparagon.com/actionkit/integrations/dynamicsbusinesscentral/DYNAMICS_BUSINESS_CENTRAL_SEARCH_FOR_PURCHASE_INVOICE actionkit/openapi.json post /projects/{project_id}/actions/#DYNAMICS_BUSINESS_CENTRAL_SEARCH_FOR_PURCHASE_INVOICE # Business Central Search Payment Term Source: https://docs.useparagon.com/actionkit/integrations/dynamicsbusinesscentral/DYNAMICS_BUSINESS_CENTRAL_SEARCH_PAYMENT_TERM actionkit/openapi.json post /projects/{project_id}/actions/#DYNAMICS_BUSINESS_CENTRAL_SEARCH_PAYMENT_TERM # Business Central Search Purchase Invoice Line Item Source: https://docs.useparagon.com/actionkit/integrations/dynamicsbusinesscentral/DYNAMICS_BUSINESS_CENTRAL_SEARCH_PURCHASE_INVOICE_LINE_ITEM actionkit/openapi.json post /projects/{project_id}/actions/#DYNAMICS_BUSINESS_CENTRAL_SEARCH_PURCHASE_INVOICE_LINE_ITEM # Business Central Search Tax Group Source: https://docs.useparagon.com/actionkit/integrations/dynamicsbusinesscentral/DYNAMICS_BUSINESS_CENTRAL_SEARCH_TAX_GROUP actionkit/openapi.json post /projects/{project_id}/actions/#DYNAMICS_BUSINESS_CENTRAL_SEARCH_TAX_GROUP # Business Central Search Vendor Source: https://docs.useparagon.com/actionkit/integrations/dynamicsbusinesscentral/DYNAMICS_BUSINESS_CENTRAL_SEARCH_VENDOR actionkit/openapi.json post /projects/{project_id}/actions/#DYNAMICS_BUSINESS_CENTRAL_SEARCH_VENDOR # Business Central Update Payment Term Source: https://docs.useparagon.com/actionkit/integrations/dynamicsbusinesscentral/DYNAMICS_BUSINESS_CENTRAL_UPDATE_PAYMENT_TERM actionkit/openapi.json post /projects/{project_id}/actions/#DYNAMICS_BUSINESS_CENTRAL_UPDATE_PAYMENT_TERM # Business Central Update Purchase Invoice Source: https://docs.useparagon.com/actionkit/integrations/dynamicsbusinesscentral/DYNAMICS_BUSINESS_CENTRAL_UPDATE_PURCHASE_INVOICE actionkit/openapi.json post /projects/{project_id}/actions/#DYNAMICS_BUSINESS_CENTRAL_UPDATE_PURCHASE_INVOICE # Business Central Update Purchase Invoice Line Item Source: https://docs.useparagon.com/actionkit/integrations/dynamicsbusinesscentral/DYNAMICS_BUSINESS_CENTRAL_UPDATE_PURCHASE_INVOICE_LINE_ITEM actionkit/openapi.json post /projects/{project_id}/actions/#DYNAMICS_BUSINESS_CENTRAL_UPDATE_PURCHASE_INVOICE_LINE_ITEM # Business Central Update Tax Group Source: https://docs.useparagon.com/actionkit/integrations/dynamicsbusinesscentral/DYNAMICS_BUSINESS_CENTRAL_UPDATE_TAX_GROUP actionkit/openapi.json post /projects/{project_id}/actions/#DYNAMICS_BUSINESS_CENTRAL_UPDATE_TAX_GROUP # Business Central Update Vendor Source: https://docs.useparagon.com/actionkit/integrations/dynamicsbusinesscentral/DYNAMICS_BUSINESS_CENTRAL_UPDATE_VENDOR actionkit/openapi.json post /projects/{project_id}/actions/#DYNAMICS_BUSINESS_CENTRAL_UPDATE_VENDOR # Activate Campaign Source: https://docs.useparagon.com/actionkit/integrations/eloqua/ELOQUA_ACTIVATE_CAMPAIGN actionkit/openapi.json post /projects/{project_id}/actions/#ELOQUA_ACTIVATE_CAMPAIGN # Create Campaign Source: https://docs.useparagon.com/actionkit/integrations/eloqua/ELOQUA_CREATE_CAMPAIGN actionkit/openapi.json post /projects/{project_id}/actions/#ELOQUA_CREATE_CAMPAIGN # Create Contact Source: https://docs.useparagon.com/actionkit/integrations/eloqua/ELOQUA_CREATE_CONTACT actionkit/openapi.json post /projects/{project_id}/actions/#ELOQUA_CREATE_CONTACT # Create Email Source: https://docs.useparagon.com/actionkit/integrations/eloqua/ELOQUA_CREATE_EMAIL actionkit/openapi.json post /projects/{project_id}/actions/#ELOQUA_CREATE_EMAIL # Get Campaign By ID Source: https://docs.useparagon.com/actionkit/integrations/eloqua/ELOQUA_GET_CAMPAIGN_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#ELOQUA_GET_CAMPAIGN_BY_ID # Search Campaigns Source: https://docs.useparagon.com/actionkit/integrations/eloqua/ELOQUA_SEARCH_CAMPAIGNS actionkit/openapi.json post /projects/{project_id}/actions/#ELOQUA_SEARCH_CAMPAIGNS # Search Contacts Source: https://docs.useparagon.com/actionkit/integrations/eloqua/ELOQUA_SEARCH_CONTACTS actionkit/openapi.json post /projects/{project_id}/actions/#ELOQUA_SEARCH_CONTACTS # Search Email Source: https://docs.useparagon.com/actionkit/integrations/eloqua/ELOQUA_SEARCH_EMAIL actionkit/openapi.json post /projects/{project_id}/actions/#ELOQUA_SEARCH_EMAIL # Send Email Deployment Source: https://docs.useparagon.com/actionkit/integrations/eloqua/ELOQUA_SEND_EMAIL_DEPLOYMENT actionkit/openapi.json post /projects/{project_id}/actions/#ELOQUA_SEND_EMAIL_DEPLOYMENT # Update Campaign Source: https://docs.useparagon.com/actionkit/integrations/eloqua/ELOQUA_UPDATE_CAMPAIGN actionkit/openapi.json post /projects/{project_id}/actions/#ELOQUA_UPDATE_CAMPAIGN # Update Contact Source: https://docs.useparagon.com/actionkit/integrations/eloqua/ELOQUA_UPDATE_CONTACT actionkit/openapi.json post /projects/{project_id}/actions/#ELOQUA_UPDATE_CONTACT # Update Email Source: https://docs.useparagon.com/actionkit/integrations/eloqua/ELOQUA_UPDATE_EMAIL actionkit/openapi.json post /projects/{project_id}/actions/#ELOQUA_UPDATE_EMAIL # Ads Build Ad Creative Object Source: https://docs.useparagon.com/actionkit/integrations/facebookAds/FACEBOOK_ADS_BUILD_AD_CREATIVE_OBJECT actionkit/openapi.json post /projects/{project_id}/actions/#FACEBOOK_ADS_BUILD_AD_CREATIVE_OBJECT # Ads Create Ad Source: https://docs.useparagon.com/actionkit/integrations/facebookAds/FACEBOOK_ADS_CREATE_AD actionkit/openapi.json post /projects/{project_id}/actions/#FACEBOOK_ADS_CREATE_AD # Ads Create Ad Creative Source: https://docs.useparagon.com/actionkit/integrations/facebookAds/FACEBOOK_ADS_CREATE_AD_CREATIVE actionkit/openapi.json post /projects/{project_id}/actions/#FACEBOOK_ADS_CREATE_AD_CREATIVE # Ads Create Ad Set Source: https://docs.useparagon.com/actionkit/integrations/facebookAds/FACEBOOK_ADS_CREATE_AD_SET actionkit/openapi.json post /projects/{project_id}/actions/#FACEBOOK_ADS_CREATE_AD_SET # Ads Create Campaign Source: https://docs.useparagon.com/actionkit/integrations/facebookAds/FACEBOOK_ADS_CREATE_CAMPAIGN actionkit/openapi.json post /projects/{project_id}/actions/#FACEBOOK_ADS_CREATE_CAMPAIGN # Ads Create Lead Gen Form Source: https://docs.useparagon.com/actionkit/integrations/facebookAds/FACEBOOK_ADS_CREATE_LEAD_GEN_FORM actionkit/openapi.json post /projects/{project_id}/actions/#FACEBOOK_ADS_CREATE_LEAD_GEN_FORM # Ads Get Ad By ID Source: https://docs.useparagon.com/actionkit/integrations/facebookAds/FACEBOOK_ADS_GET_AD_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#FACEBOOK_ADS_GET_AD_BY_ID # Ads Get Ad Sets Source: https://docs.useparagon.com/actionkit/integrations/facebookAds/FACEBOOK_ADS_GET_AD_SETS actionkit/openapi.json post /projects/{project_id}/actions/#FACEBOOK_ADS_GET_AD_SETS # Ads Get Ad Set By ID Source: https://docs.useparagon.com/actionkit/integrations/facebookAds/FACEBOOK_ADS_GET_AD_SET_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#FACEBOOK_ADS_GET_AD_SET_BY_ID # Ads Get Campaigns Source: https://docs.useparagon.com/actionkit/integrations/facebookAds/FACEBOOK_ADS_GET_CAMPAIGNS actionkit/openapi.json post /projects/{project_id}/actions/#FACEBOOK_ADS_GET_CAMPAIGNS # Ads Get Campaign By ID Source: https://docs.useparagon.com/actionkit/integrations/facebookAds/FACEBOOK_ADS_GET_CAMPAIGN_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#FACEBOOK_ADS_GET_CAMPAIGN_BY_ID # Ads Send Funnel Event Source: https://docs.useparagon.com/actionkit/integrations/facebookAds/FACEBOOK_ADS_SEND_FUNNEL_EVENT actionkit/openapi.json post /projects/{project_id}/actions/#FACEBOOK_ADS_SEND_FUNNEL_EVENT # Ads Send Lead Event Source: https://docs.useparagon.com/actionkit/integrations/facebookAds/FACEBOOK_ADS_SEND_LEAD_EVENT actionkit/openapi.json post /projects/{project_id}/actions/#FACEBOOK_ADS_SEND_LEAD_EVENT # Ads Send Purchase Event Source: https://docs.useparagon.com/actionkit/integrations/facebookAds/FACEBOOK_ADS_SEND_PURCHASE_EVENT actionkit/openapi.json post /projects/{project_id}/actions/#FACEBOOK_ADS_SEND_PURCHASE_EVENT # Ads Update Ad Source: https://docs.useparagon.com/actionkit/integrations/facebookAds/FACEBOOK_ADS_UPDATE_AD actionkit/openapi.json post /projects/{project_id}/actions/#FACEBOOK_ADS_UPDATE_AD # Ads Update Ad Set Source: https://docs.useparagon.com/actionkit/integrations/facebookAds/FACEBOOK_ADS_UPDATE_AD_SET actionkit/openapi.json post /projects/{project_id}/actions/#FACEBOOK_ADS_UPDATE_AD_SET # Ads Update Campaign Source: https://docs.useparagon.com/actionkit/integrations/facebookAds/FACEBOOK_ADS_UPDATE_CAMPAIGN actionkit/openapi.json post /projects/{project_id}/actions/#FACEBOOK_ADS_UPDATE_CAMPAIGN # Create Comment Source: https://docs.useparagon.com/actionkit/integrations/figma/FIGMA_CREATE_COMMENT actionkit/openapi.json post /projects/{project_id}/actions/#FIGMA_CREATE_COMMENT # Create Comment Reaction Source: https://docs.useparagon.com/actionkit/integrations/figma/FIGMA_CREATE_COMMENT_REACTION actionkit/openapi.json post /projects/{project_id}/actions/#FIGMA_CREATE_COMMENT_REACTION # Delete Comments Source: https://docs.useparagon.com/actionkit/integrations/figma/FIGMA_DELETE_COMMENTS actionkit/openapi.json post /projects/{project_id}/actions/#FIGMA_DELETE_COMMENTS # Delete Comment Reaction Source: https://docs.useparagon.com/actionkit/integrations/figma/FIGMA_DELETE_COMMENT_REACTION actionkit/openapi.json post /projects/{project_id}/actions/#FIGMA_DELETE_COMMENT_REACTION # Get Comments By File Source: https://docs.useparagon.com/actionkit/integrations/figma/FIGMA_GET_COMMENTS_BY_FILE actionkit/openapi.json post /projects/{project_id}/actions/#FIGMA_GET_COMMENTS_BY_FILE # Get Comment Reaction Source: https://docs.useparagon.com/actionkit/integrations/figma/FIGMA_GET_COMMENT_REACTION actionkit/openapi.json post /projects/{project_id}/actions/#FIGMA_GET_COMMENT_REACTION # Get File By ID Source: https://docs.useparagon.com/actionkit/integrations/figma/FIGMA_GET_FILE_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#FIGMA_GET_FILE_BY_ID # Get File Nodes Source: https://docs.useparagon.com/actionkit/integrations/figma/FIGMA_GET_FILE_NODES actionkit/openapi.json post /projects/{project_id}/actions/#FIGMA_GET_FILE_NODES # Get Project Source: https://docs.useparagon.com/actionkit/integrations/figma/FIGMA_GET_PROJECT actionkit/openapi.json post /projects/{project_id}/actions/#FIGMA_GET_PROJECT # Get Project Files Source: https://docs.useparagon.com/actionkit/integrations/figma/FIGMA_GET_PROJECT_FILES actionkit/openapi.json post /projects/{project_id}/actions/#FIGMA_GET_PROJECT_FILES # Get Rendered Image Source: https://docs.useparagon.com/actionkit/integrations/figma/FIGMA_GET_RENDERED_IMAGE actionkit/openapi.json post /projects/{project_id}/actions/#FIGMA_GET_RENDERED_IMAGE # Create Ticket Source: https://docs.useparagon.com/actionkit/integrations/freshdesk/FRESHDESK_CREATE_TICKET actionkit/openapi.json post /projects/{project_id}/actions/#FRESHDESK_CREATE_TICKET # Delete Ticket Source: https://docs.useparagon.com/actionkit/integrations/freshdesk/FRESHDESK_DELETE_TICKET actionkit/openapi.json post /projects/{project_id}/actions/#FRESHDESK_DELETE_TICKET # Get Ticket By ID Source: https://docs.useparagon.com/actionkit/integrations/freshdesk/FRESHDESK_GET_TICKET_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#FRESHDESK_GET_TICKET_BY_ID # Update Ticket Source: https://docs.useparagon.com/actionkit/integrations/freshdesk/FRESHDESK_UPDATE_TICKET actionkit/openapi.json post /projects/{project_id}/actions/#FRESHDESK_UPDATE_TICKET # Create Account Source: https://docs.useparagon.com/actionkit/integrations/front/FRONT_CREATE_ACCOUNT actionkit/openapi.json post /projects/{project_id}/actions/#FRONT_CREATE_ACCOUNT # Create Contact Source: https://docs.useparagon.com/actionkit/integrations/front/FRONT_CREATE_CONTACT actionkit/openapi.json post /projects/{project_id}/actions/#FRONT_CREATE_CONTACT # Delete Account Source: https://docs.useparagon.com/actionkit/integrations/front/FRONT_DELETE_ACCOUNT actionkit/openapi.json post /projects/{project_id}/actions/#FRONT_DELETE_ACCOUNT # Delete Contact Source: https://docs.useparagon.com/actionkit/integrations/front/FRONT_DELETE_CONTACT actionkit/openapi.json post /projects/{project_id}/actions/#FRONT_DELETE_CONTACT # Get Account By ID Source: https://docs.useparagon.com/actionkit/integrations/front/FRONT_GET_ACCOUNT_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#FRONT_GET_ACCOUNT_BY_ID # Get Contact By ID Source: https://docs.useparagon.com/actionkit/integrations/front/FRONT_GET_CONTACT_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#FRONT_GET_CONTACT_BY_ID # Search Accounts Source: https://docs.useparagon.com/actionkit/integrations/front/FRONT_SEARCH_ACCOUNTS actionkit/openapi.json post /projects/{project_id}/actions/#FRONT_SEARCH_ACCOUNTS # Search Contacts Source: https://docs.useparagon.com/actionkit/integrations/front/FRONT_SEARCH_CONTACTS actionkit/openapi.json post /projects/{project_id}/actions/#FRONT_SEARCH_CONTACTS # Update Account Source: https://docs.useparagon.com/actionkit/integrations/front/FRONT_UPDATE_ACCOUNT actionkit/openapi.json post /projects/{project_id}/actions/#FRONT_UPDATE_ACCOUNT # Update Contact Source: https://docs.useparagon.com/actionkit/integrations/front/FRONT_UPDATE_CONTACT actionkit/openapi.json post /projects/{project_id}/actions/#FRONT_UPDATE_CONTACT # Create Issue Source: https://docs.useparagon.com/actionkit/integrations/github/GITHUB_CREATE_ISSUE actionkit/openapi.json post /projects/{project_id}/actions/#GITHUB_CREATE_ISSUE # Create Release Source: https://docs.useparagon.com/actionkit/integrations/github/GITHUB_CREATE_RELEASE actionkit/openapi.json post /projects/{project_id}/actions/#GITHUB_CREATE_RELEASE # Delete Release Source: https://docs.useparagon.com/actionkit/integrations/github/GITHUB_DELETE_RELEASE actionkit/openapi.json post /projects/{project_id}/actions/#GITHUB_DELETE_RELEASE # Get Issue By Number Source: https://docs.useparagon.com/actionkit/integrations/github/GITHUB_GET_ISSUE_BY_NUMBER actionkit/openapi.json post /projects/{project_id}/actions/#GITHUB_GET_ISSUE_BY_NUMBER # Get Release By ID Source: https://docs.useparagon.com/actionkit/integrations/github/GITHUB_GET_RELEASE_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#GITHUB_GET_RELEASE_BY_ID # Get Release By Tag Name Source: https://docs.useparagon.com/actionkit/integrations/github/GITHUB_GET_RELEASE_BY_TAG_NAME actionkit/openapi.json post /projects/{project_id}/actions/#GITHUB_GET_RELEASE_BY_TAG_NAME # Lock Issue Source: https://docs.useparagon.com/actionkit/integrations/github/GITHUB_LOCK_ISSUE actionkit/openapi.json post /projects/{project_id}/actions/#GITHUB_LOCK_ISSUE # Search Issue Source: https://docs.useparagon.com/actionkit/integrations/github/GITHUB_SEARCH_ISSUE actionkit/openapi.json post /projects/{project_id}/actions/#GITHUB_SEARCH_ISSUE # Update Issue Source: https://docs.useparagon.com/actionkit/integrations/github/GITHUB_UPDATE_ISSUE actionkit/openapi.json post /projects/{project_id}/actions/#GITHUB_UPDATE_ISSUE # Update Release Source: https://docs.useparagon.com/actionkit/integrations/github/GITHUB_UPDATE_RELEASE actionkit/openapi.json post /projects/{project_id}/actions/#GITHUB_UPDATE_RELEASE # Create A Contact Source: https://docs.useparagon.com/actionkit/integrations/gmail/GMAIL_CREATE_A_CONTACT actionkit/openapi.json post /projects/{project_id}/actions/#GMAIL_CREATE_A_CONTACT # Create Draft Source: https://docs.useparagon.com/actionkit/integrations/gmail/GMAIL_CREATE_DRAFT actionkit/openapi.json post /projects/{project_id}/actions/#GMAIL_CREATE_DRAFT # Delete Contact Source: https://docs.useparagon.com/actionkit/integrations/gmail/GMAIL_DELETE_CONTACT actionkit/openapi.json post /projects/{project_id}/actions/#GMAIL_DELETE_CONTACT # Delete Email Source: https://docs.useparagon.com/actionkit/integrations/gmail/GMAIL_DELETE_EMAIL actionkit/openapi.json post /projects/{project_id}/actions/#GMAIL_DELETE_EMAIL # Get Contact By Resource Name Source: https://docs.useparagon.com/actionkit/integrations/gmail/GMAIL_GET_CONTACT_BY_RESOURCE_NAME actionkit/openapi.json post /projects/{project_id}/actions/#GMAIL_GET_CONTACT_BY_RESOURCE_NAME # Get Email By ID Source: https://docs.useparagon.com/actionkit/integrations/gmail/GMAIL_GET_EMAIL_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#GMAIL_GET_EMAIL_BY_ID # Search For Contact Source: https://docs.useparagon.com/actionkit/integrations/gmail/GMAIL_SEARCH_FOR_CONTACT actionkit/openapi.json post /projects/{project_id}/actions/#GMAIL_SEARCH_FOR_CONTACT # Search For Email Source: https://docs.useparagon.com/actionkit/integrations/gmail/GMAIL_SEARCH_FOR_EMAIL actionkit/openapi.json post /projects/{project_id}/actions/#GMAIL_SEARCH_FOR_EMAIL # Send Email Source: https://docs.useparagon.com/actionkit/integrations/gmail/GMAIL_SEND_EMAIL actionkit/openapi.json post /projects/{project_id}/actions/#GMAIL_SEND_EMAIL # Add Call Source: https://docs.useparagon.com/actionkit/integrations/gong/GONG_ADD_CALL actionkit/openapi.json post /projects/{project_id}/actions/#GONG_ADD_CALL # Get Call By ID Source: https://docs.useparagon.com/actionkit/integrations/gong/GONG_GET_CALL_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#GONG_GET_CALL_BY_ID # Search Call Source: https://docs.useparagon.com/actionkit/integrations/gong/GONG_SEARCH_CALL actionkit/openapi.json post /projects/{project_id}/actions/#GONG_SEARCH_CALL # Calendar Create Event Source: https://docs.useparagon.com/actionkit/integrations/googleCalendar/GOOGLE_CALENDAR_CREATE_EVENT actionkit/openapi.json post /projects/{project_id}/actions/#GOOGLE_CALENDAR_CREATE_EVENT # Calendar Delete Event Source: https://docs.useparagon.com/actionkit/integrations/googleCalendar/GOOGLE_CALENDAR_DELETE_EVENT actionkit/openapi.json post /projects/{project_id}/actions/#GOOGLE_CALENDAR_DELETE_EVENT # Calendar Get Availability Source: https://docs.useparagon.com/actionkit/integrations/googleCalendar/GOOGLE_CALENDAR_GET_AVAILABILITY actionkit/openapi.json post /projects/{project_id}/actions/#GOOGLE_CALENDAR_GET_AVAILABILITY # Calendar Get Contacts Source: https://docs.useparagon.com/actionkit/integrations/googleCalendar/GOOGLE_CALENDAR_GET_CONTACTS actionkit/openapi.json post /projects/{project_id}/actions/#GOOGLE_CALENDAR_GET_CONTACTS # Calendar Get Event By ID Source: https://docs.useparagon.com/actionkit/integrations/googleCalendar/GOOGLE_CALENDAR_GET_EVENT_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#GOOGLE_CALENDAR_GET_EVENT_BY_ID # Calendar List Directory People Source: https://docs.useparagon.com/actionkit/integrations/googleCalendar/GOOGLE_CALENDAR_LIST_DIRECTORY_PEOPLE actionkit/openapi.json post /projects/{project_id}/actions/#GOOGLE_CALENDAR_LIST_DIRECTORY_PEOPLE # Calendar List Events Source: https://docs.useparagon.com/actionkit/integrations/googleCalendar/GOOGLE_CALENDAR_LIST_EVENTS actionkit/openapi.json post /projects/{project_id}/actions/#GOOGLE_CALENDAR_LIST_EVENTS # Calendar List Other Contacts Source: https://docs.useparagon.com/actionkit/integrations/googleCalendar/GOOGLE_CALENDAR_LIST_OTHER_CONTACTS actionkit/openapi.json post /projects/{project_id}/actions/#GOOGLE_CALENDAR_LIST_OTHER_CONTACTS # Calendar Search Contacts Source: https://docs.useparagon.com/actionkit/integrations/googleCalendar/GOOGLE_CALENDAR_SEARCH_CONTACTS actionkit/openapi.json post /projects/{project_id}/actions/#GOOGLE_CALENDAR_SEARCH_CONTACTS # Calendar Search Directory People Source: https://docs.useparagon.com/actionkit/integrations/googleCalendar/GOOGLE_CALENDAR_SEARCH_DIRECTORY_PEOPLE actionkit/openapi.json post /projects/{project_id}/actions/#GOOGLE_CALENDAR_SEARCH_DIRECTORY_PEOPLE # Calendar Search Other Contacts Source: https://docs.useparagon.com/actionkit/integrations/googleCalendar/GOOGLE_CALENDAR_SEARCH_OTHER_CONTACTS actionkit/openapi.json post /projects/{project_id}/actions/#GOOGLE_CALENDAR_SEARCH_OTHER_CONTACTS # Calendar Update Event Source: https://docs.useparagon.com/actionkit/integrations/googleCalendar/GOOGLE_CALENDAR_UPDATE_EVENT actionkit/openapi.json post /projects/{project_id}/actions/#GOOGLE_CALENDAR_UPDATE_EVENT # Drive Create Folder Source: https://docs.useparagon.com/actionkit/integrations/googledrive/GOOGLE_DRIVE_CREATE_FOLDER actionkit/openapi.json post /projects/{project_id}/actions/#GOOGLE_DRIVE_CREATE_FOLDER # Drive Delete Folder Source: https://docs.useparagon.com/actionkit/integrations/googledrive/GOOGLE_DRIVE_DELETE_FOLDER actionkit/openapi.json post /projects/{project_id}/actions/#GOOGLE_DRIVE_DELETE_FOLDER # Drive Export Doc Source: https://docs.useparagon.com/actionkit/integrations/googledrive/GOOGLE_DRIVE_EXPORT_DOC actionkit/openapi.json post /projects/{project_id}/actions/#GOOGLE_DRIVE_EXPORT_DOC # Drive Get File By ID Source: https://docs.useparagon.com/actionkit/integrations/googledrive/GOOGLE_DRIVE_GET_FILE_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#GOOGLE_DRIVE_GET_FILE_BY_ID # Drive Get Folder By ID Source: https://docs.useparagon.com/actionkit/integrations/googledrive/GOOGLE_DRIVE_GET_FOLDER_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#GOOGLE_DRIVE_GET_FOLDER_BY_ID # Drive List Files Source: https://docs.useparagon.com/actionkit/integrations/googledrive/GOOGLE_DRIVE_LIST_FILES actionkit/openapi.json post /projects/{project_id}/actions/#GOOGLE_DRIVE_LIST_FILES # Drive Move Folder Source: https://docs.useparagon.com/actionkit/integrations/googledrive/GOOGLE_DRIVE_MOVE_FOLDER actionkit/openapi.json post /projects/{project_id}/actions/#GOOGLE_DRIVE_MOVE_FOLDER # Drive Save File Source: https://docs.useparagon.com/actionkit/integrations/googledrive/GOOGLE_DRIVE_SAVE_FILE actionkit/openapi.json post /projects/{project_id}/actions/#GOOGLE_DRIVE_SAVE_FILE # Drive Search Folders Source: https://docs.useparagon.com/actionkit/integrations/googledrive/GOOGLE_DRIVE_SEARCH_FOLDERS actionkit/openapi.json post /projects/{project_id}/actions/#GOOGLE_DRIVE_SEARCH_FOLDERS # Search Console Create Site Source: https://docs.useparagon.com/actionkit/integrations/googlesearchconsole/GOOGLE_SEARCH_CONSOLE_CREATE_SITE actionkit/openapi.json post /projects/{project_id}/actions/#GOOGLE_SEARCH_CONSOLE_CREATE_SITE # Search Console Get All Sites Source: https://docs.useparagon.com/actionkit/integrations/googlesearchconsole/GOOGLE_SEARCH_CONSOLE_GET_ALL_SITES actionkit/openapi.json post /projects/{project_id}/actions/#GOOGLE_SEARCH_CONSOLE_GET_ALL_SITES # Search Console Inspect Index Info Source: https://docs.useparagon.com/actionkit/integrations/googlesearchconsole/GOOGLE_SEARCH_CONSOLE_INSPECT_INDEX_INFO actionkit/openapi.json post /projects/{project_id}/actions/#GOOGLE_SEARCH_CONSOLE_INSPECT_INDEX_INFO # Search Console Query Search Data Source: https://docs.useparagon.com/actionkit/integrations/googlesearchconsole/GOOGLE_SEARCH_CONSOLE_QUERY_SEARCH_DATA actionkit/openapi.json post /projects/{project_id}/actions/#GOOGLE_SEARCH_CONSOLE_QUERY_SEARCH_DATA # Sheets Create Row Source: https://docs.useparagon.com/actionkit/integrations/googlesheets/GOOGLE_SHEETS_CREATE_ROW actionkit/openapi.json post /projects/{project_id}/actions/#GOOGLE_SHEETS_CREATE_ROW # Sheets Get Row Source: https://docs.useparagon.com/actionkit/integrations/googlesheets/GOOGLE_SHEETS_GET_ROW actionkit/openapi.json post /projects/{project_id}/actions/#GOOGLE_SHEETS_GET_ROW # Sheets Update Row Source: https://docs.useparagon.com/actionkit/integrations/googlesheets/GOOGLE_SHEETS_UPDATE_ROW actionkit/openapi.json post /projects/{project_id}/actions/#GOOGLE_SHEETS_UPDATE_ROW # Create Employee Source: https://docs.useparagon.com/actionkit/integrations/gusto/GUSTO_CREATE_EMPLOYEE actionkit/openapi.json post /projects/{project_id}/actions/#GUSTO_CREATE_EMPLOYEE # Get Employee By ID Source: https://docs.useparagon.com/actionkit/integrations/gusto/GUSTO_GET_EMPLOYEE_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#GUSTO_GET_EMPLOYEE_BY_ID # Get Employee Directory Source: https://docs.useparagon.com/actionkit/integrations/gusto/GUSTO_GET_EMPLOYEE_DIRECTORY actionkit/openapi.json post /projects/{project_id}/actions/#GUSTO_GET_EMPLOYEE_DIRECTORY # Update Employee Source: https://docs.useparagon.com/actionkit/integrations/gusto/GUSTO_UPDATE_EMPLOYEE actionkit/openapi.json post /projects/{project_id}/actions/#GUSTO_UPDATE_EMPLOYEE # Create Record Any Source: https://docs.useparagon.com/actionkit/integrations/hubspot/HUBSPOT_CREATE_RECORD_ANY actionkit/openapi.json post /projects/{project_id}/actions/#HUBSPOT_CREATE_RECORD_ANY # Create Record Companies Source: https://docs.useparagon.com/actionkit/integrations/hubspot/HUBSPOT_CREATE_RECORD_COMPANIES actionkit/openapi.json post /projects/{project_id}/actions/#HUBSPOT_CREATE_RECORD_COMPANIES # Create Record Contacts Source: https://docs.useparagon.com/actionkit/integrations/hubspot/HUBSPOT_CREATE_RECORD_CONTACTS actionkit/openapi.json post /projects/{project_id}/actions/#HUBSPOT_CREATE_RECORD_CONTACTS # Create Record Deals Source: https://docs.useparagon.com/actionkit/integrations/hubspot/HUBSPOT_CREATE_RECORD_DEALS actionkit/openapi.json post /projects/{project_id}/actions/#HUBSPOT_CREATE_RECORD_DEALS # Create Record Engagements Source: https://docs.useparagon.com/actionkit/integrations/hubspot/HUBSPOT_CREATE_RECORD_ENGAGEMENTS actionkit/openapi.json post /projects/{project_id}/actions/#HUBSPOT_CREATE_RECORD_ENGAGEMENTS # Delete Record Any Source: https://docs.useparagon.com/actionkit/integrations/hubspot/HUBSPOT_DELETE_RECORD_ANY actionkit/openapi.json post /projects/{project_id}/actions/#HUBSPOT_DELETE_RECORD_ANY # Delete Record Companies Source: https://docs.useparagon.com/actionkit/integrations/hubspot/HUBSPOT_DELETE_RECORD_COMPANIES actionkit/openapi.json post /projects/{project_id}/actions/#HUBSPOT_DELETE_RECORD_COMPANIES # Delete Record Contacts Source: https://docs.useparagon.com/actionkit/integrations/hubspot/HUBSPOT_DELETE_RECORD_CONTACTS actionkit/openapi.json post /projects/{project_id}/actions/#HUBSPOT_DELETE_RECORD_CONTACTS # Delete Record Deals Source: https://docs.useparagon.com/actionkit/integrations/hubspot/HUBSPOT_DELETE_RECORD_DEALS actionkit/openapi.json post /projects/{project_id}/actions/#HUBSPOT_DELETE_RECORD_DEALS # Delete Record Engagements Source: https://docs.useparagon.com/actionkit/integrations/hubspot/HUBSPOT_DELETE_RECORD_ENGAGEMENTS actionkit/openapi.json post /projects/{project_id}/actions/#HUBSPOT_DELETE_RECORD_ENGAGEMENTS # Describe Action Schema Source: https://docs.useparagon.com/actionkit/integrations/hubspot/HUBSPOT_DESCRIBE_ACTION_SCHEMA actionkit/openapi.json post /projects/{project_id}/actions/#HUBSPOT_DESCRIBE_ACTION_SCHEMA # Get Contacts By List ID Source: https://docs.useparagon.com/actionkit/integrations/hubspot/HUBSPOT_GET_CONTACTS_BY_LIST_ID actionkit/openapi.json post /projects/{project_id}/actions/#HUBSPOT_GET_CONTACTS_BY_LIST_ID # Get Records Any Source: https://docs.useparagon.com/actionkit/integrations/hubspot/HUBSPOT_GET_RECORDS_ANY actionkit/openapi.json post /projects/{project_id}/actions/#HUBSPOT_GET_RECORDS_ANY # Get Records Companies Source: https://docs.useparagon.com/actionkit/integrations/hubspot/HUBSPOT_GET_RECORDS_COMPANIES actionkit/openapi.json post /projects/{project_id}/actions/#HUBSPOT_GET_RECORDS_COMPANIES # Get Records Contacts Source: https://docs.useparagon.com/actionkit/integrations/hubspot/HUBSPOT_GET_RECORDS_CONTACTS actionkit/openapi.json post /projects/{project_id}/actions/#HUBSPOT_GET_RECORDS_CONTACTS # Get Records Deals Source: https://docs.useparagon.com/actionkit/integrations/hubspot/HUBSPOT_GET_RECORDS_DEALS actionkit/openapi.json post /projects/{project_id}/actions/#HUBSPOT_GET_RECORDS_DEALS # Get Records Engagements Source: https://docs.useparagon.com/actionkit/integrations/hubspot/HUBSPOT_GET_RECORDS_ENGAGEMENTS actionkit/openapi.json post /projects/{project_id}/actions/#HUBSPOT_GET_RECORDS_ENGAGEMENTS # Get Record By ID Any Source: https://docs.useparagon.com/actionkit/integrations/hubspot/HUBSPOT_GET_RECORD_BY_ID_ANY actionkit/openapi.json post /projects/{project_id}/actions/#HUBSPOT_GET_RECORD_BY_ID_ANY # Get Record By ID Companies Source: https://docs.useparagon.com/actionkit/integrations/hubspot/HUBSPOT_GET_RECORD_BY_ID_COMPANIES actionkit/openapi.json post /projects/{project_id}/actions/#HUBSPOT_GET_RECORD_BY_ID_COMPANIES # Get Record By ID Contacts Source: https://docs.useparagon.com/actionkit/integrations/hubspot/HUBSPOT_GET_RECORD_BY_ID_CONTACTS actionkit/openapi.json post /projects/{project_id}/actions/#HUBSPOT_GET_RECORD_BY_ID_CONTACTS # Get Record By ID Deals Source: https://docs.useparagon.com/actionkit/integrations/hubspot/HUBSPOT_GET_RECORD_BY_ID_DEALS actionkit/openapi.json post /projects/{project_id}/actions/#HUBSPOT_GET_RECORD_BY_ID_DEALS # Get Record By ID Engagements Source: https://docs.useparagon.com/actionkit/integrations/hubspot/HUBSPOT_GET_RECORD_BY_ID_ENGAGEMENTS actionkit/openapi.json post /projects/{project_id}/actions/#HUBSPOT_GET_RECORD_BY_ID_ENGAGEMENTS # Search Records Any Source: https://docs.useparagon.com/actionkit/integrations/hubspot/HUBSPOT_SEARCH_RECORDS_ANY actionkit/openapi.json post /projects/{project_id}/actions/#HUBSPOT_SEARCH_RECORDS_ANY # Search Records Companies Source: https://docs.useparagon.com/actionkit/integrations/hubspot/HUBSPOT_SEARCH_RECORDS_COMPANIES actionkit/openapi.json post /projects/{project_id}/actions/#HUBSPOT_SEARCH_RECORDS_COMPANIES # Search Records Contacts Source: https://docs.useparagon.com/actionkit/integrations/hubspot/HUBSPOT_SEARCH_RECORDS_CONTACTS actionkit/openapi.json post /projects/{project_id}/actions/#HUBSPOT_SEARCH_RECORDS_CONTACTS # Search Records Deals Source: https://docs.useparagon.com/actionkit/integrations/hubspot/HUBSPOT_SEARCH_RECORDS_DEALS actionkit/openapi.json post /projects/{project_id}/actions/#HUBSPOT_SEARCH_RECORDS_DEALS # Search Records Engagements Source: https://docs.useparagon.com/actionkit/integrations/hubspot/HUBSPOT_SEARCH_RECORDS_ENGAGEMENTS actionkit/openapi.json post /projects/{project_id}/actions/#HUBSPOT_SEARCH_RECORDS_ENGAGEMENTS # Update Record Any Source: https://docs.useparagon.com/actionkit/integrations/hubspot/HUBSPOT_UPDATE_RECORD_ANY actionkit/openapi.json post /projects/{project_id}/actions/#HUBSPOT_UPDATE_RECORD_ANY # Update Record Companies Source: https://docs.useparagon.com/actionkit/integrations/hubspot/HUBSPOT_UPDATE_RECORD_COMPANIES actionkit/openapi.json post /projects/{project_id}/actions/#HUBSPOT_UPDATE_RECORD_COMPANIES # Update Record Contacts Source: https://docs.useparagon.com/actionkit/integrations/hubspot/HUBSPOT_UPDATE_RECORD_CONTACTS actionkit/openapi.json post /projects/{project_id}/actions/#HUBSPOT_UPDATE_RECORD_CONTACTS # Update Record Deals Source: https://docs.useparagon.com/actionkit/integrations/hubspot/HUBSPOT_UPDATE_RECORD_DEALS actionkit/openapi.json post /projects/{project_id}/actions/#HUBSPOT_UPDATE_RECORD_DEALS # Update Record Engagements Source: https://docs.useparagon.com/actionkit/integrations/hubspot/HUBSPOT_UPDATE_RECORD_ENGAGEMENTS actionkit/openapi.json post /projects/{project_id}/actions/#HUBSPOT_UPDATE_RECORD_ENGAGEMENTS # Create Contact Source: https://docs.useparagon.com/actionkit/integrations/intercom/INTERCOM_CREATE_CONTACT actionkit/openapi.json post /projects/{project_id}/actions/#INTERCOM_CREATE_CONTACT # Get Contact By ID Source: https://docs.useparagon.com/actionkit/integrations/intercom/INTERCOM_GET_CONTACT_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#INTERCOM_GET_CONTACT_BY_ID # Search Contacts Source: https://docs.useparagon.com/actionkit/integrations/intercom/INTERCOM_SEARCH_CONTACTS actionkit/openapi.json post /projects/{project_id}/actions/#INTERCOM_SEARCH_CONTACTS # Send Message Source: https://docs.useparagon.com/actionkit/integrations/intercom/INTERCOM_SEND_MESSAGE actionkit/openapi.json post /projects/{project_id}/actions/#INTERCOM_SEND_MESSAGE # Update Contact Source: https://docs.useparagon.com/actionkit/integrations/intercom/INTERCOM_UPDATE_CONTACT actionkit/openapi.json post /projects/{project_id}/actions/#INTERCOM_UPDATE_CONTACT # Create Issue Source: https://docs.useparagon.com/actionkit/integrations/jira/JIRA_CREATE_ISSUE actionkit/openapi.json post /projects/{project_id}/actions/#JIRA_CREATE_ISSUE # Describe Action Schema Source: https://docs.useparagon.com/actionkit/integrations/jira/JIRA_DESCRIBE_ACTION_SCHEMA actionkit/openapi.json post /projects/{project_id}/actions/#JIRA_DESCRIBE_ACTION_SCHEMA # Filter Issues Source: https://docs.useparagon.com/actionkit/integrations/jira/JIRA_FILTER_ISSUES actionkit/openapi.json post /projects/{project_id}/actions/#JIRA_FILTER_ISSUES # Get All Assignees By Project Source: https://docs.useparagon.com/actionkit/integrations/jira/JIRA_GET_ALL_ASSIGNEES_BY_PROJECT actionkit/openapi.json post /projects/{project_id}/actions/#JIRA_GET_ALL_ASSIGNEES_BY_PROJECT # Get Issue By Key Source: https://docs.useparagon.com/actionkit/integrations/jira/JIRA_GET_ISSUE_BY_KEY actionkit/openapi.json post /projects/{project_id}/actions/#JIRA_GET_ISSUE_BY_KEY # Get Issue Status By Project Source: https://docs.useparagon.com/actionkit/integrations/jira/JIRA_GET_ISSUE_STATUS_BY_PROJECT actionkit/openapi.json post /projects/{project_id}/actions/#JIRA_GET_ISSUE_STATUS_BY_PROJECT # Get Issue Types Source: https://docs.useparagon.com/actionkit/integrations/jira/JIRA_GET_ISSUE_TYPES actionkit/openapi.json post /projects/{project_id}/actions/#JIRA_GET_ISSUE_TYPES # Get Issue Types By Project Source: https://docs.useparagon.com/actionkit/integrations/jira/JIRA_GET_ISSUE_TYPES_BY_PROJECT actionkit/openapi.json post /projects/{project_id}/actions/#JIRA_GET_ISSUE_TYPES_BY_PROJECT # Get Projects Source: https://docs.useparagon.com/actionkit/integrations/jira/JIRA_GET_PROJECTS actionkit/openapi.json post /projects/{project_id}/actions/#JIRA_GET_PROJECTS # Search By JQL Source: https://docs.useparagon.com/actionkit/integrations/jira/JIRA_SEARCH_BY_JQL actionkit/openapi.json post /projects/{project_id}/actions/#JIRA_SEARCH_BY_JQL # Update Issue Source: https://docs.useparagon.com/actionkit/integrations/jira/JIRA_UPDATE_ISSUE actionkit/openapi.json post /projects/{project_id}/actions/#JIRA_UPDATE_ISSUE # Update Issue Any Source: https://docs.useparagon.com/actionkit/integrations/jira/JIRA_UPDATE_ISSUE_ANY actionkit/openapi.json post /projects/{project_id}/actions/#JIRA_UPDATE_ISSUE_ANY # Add Subscriber To List Source: https://docs.useparagon.com/actionkit/integrations/klaviyo/KLAVIYO_ADD_SUBSCRIBER_TO_LIST actionkit/openapi.json post /projects/{project_id}/actions/#KLAVIYO_ADD_SUBSCRIBER_TO_LIST # Create Campaign Source: https://docs.useparagon.com/actionkit/integrations/klaviyo/KLAVIYO_CREATE_CAMPAIGN actionkit/openapi.json post /projects/{project_id}/actions/#KLAVIYO_CREATE_CAMPAIGN # Create List Source: https://docs.useparagon.com/actionkit/integrations/klaviyo/KLAVIYO_CREATE_LIST actionkit/openapi.json post /projects/{project_id}/actions/#KLAVIYO_CREATE_LIST # Create Template Source: https://docs.useparagon.com/actionkit/integrations/klaviyo/KLAVIYO_CREATE_TEMPLATE actionkit/openapi.json post /projects/{project_id}/actions/#KLAVIYO_CREATE_TEMPLATE # Get Campaign Source: https://docs.useparagon.com/actionkit/integrations/klaviyo/KLAVIYO_GET_CAMPAIGN actionkit/openapi.json post /projects/{project_id}/actions/#KLAVIYO_GET_CAMPAIGN # Get Lists Source: https://docs.useparagon.com/actionkit/integrations/klaviyo/KLAVIYO_GET_LISTS actionkit/openapi.json post /projects/{project_id}/actions/#KLAVIYO_GET_LISTS # Get List Subscriber Source: https://docs.useparagon.com/actionkit/integrations/klaviyo/KLAVIYO_GET_LIST_SUBSCRIBER actionkit/openapi.json post /projects/{project_id}/actions/#KLAVIYO_GET_LIST_SUBSCRIBER # Get Profile Source: https://docs.useparagon.com/actionkit/integrations/klaviyo/KLAVIYO_GET_PROFILE actionkit/openapi.json post /projects/{project_id}/actions/#KLAVIYO_GET_PROFILE # Get Segements Source: https://docs.useparagon.com/actionkit/integrations/klaviyo/KLAVIYO_GET_SEGEMENTS actionkit/openapi.json post /projects/{project_id}/actions/#KLAVIYO_GET_SEGEMENTS # Get Segment Subscribers Source: https://docs.useparagon.com/actionkit/integrations/klaviyo/KLAVIYO_GET_SEGMENT_SUBSCRIBERS actionkit/openapi.json post /projects/{project_id}/actions/#KLAVIYO_GET_SEGMENT_SUBSCRIBERS # Get Templates Source: https://docs.useparagon.com/actionkit/integrations/klaviyo/KLAVIYO_GET_TEMPLATES actionkit/openapi.json post /projects/{project_id}/actions/#KLAVIYO_GET_TEMPLATES # Send Campaign Source: https://docs.useparagon.com/actionkit/integrations/klaviyo/KLAVIYO_SEND_CAMPAIGN actionkit/openapi.json post /projects/{project_id}/actions/#KLAVIYO_SEND_CAMPAIGN # Unsubscribe From List Source: https://docs.useparagon.com/actionkit/integrations/klaviyo/KLAVIYO_UNSUBSCRIBE_FROM_LIST actionkit/openapi.json post /projects/{project_id}/actions/#KLAVIYO_UNSUBSCRIBE_FROM_LIST # Update Profile Source: https://docs.useparagon.com/actionkit/integrations/klaviyo/KLAVIYO_UPDATE_PROFILE actionkit/openapi.json post /projects/{project_id}/actions/#KLAVIYO_UPDATE_PROFILE # Create Opportunity Source: https://docs.useparagon.com/actionkit/integrations/lever/LEVER_CREATE_OPPORTUNITY actionkit/openapi.json post /projects/{project_id}/actions/#LEVER_CREATE_OPPORTUNITY # Create Posting Source: https://docs.useparagon.com/actionkit/integrations/lever/LEVER_CREATE_POSTING actionkit/openapi.json post /projects/{project_id}/actions/#LEVER_CREATE_POSTING # Get Contact By ID Source: https://docs.useparagon.com/actionkit/integrations/lever/LEVER_GET_CONTACT_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#LEVER_GET_CONTACT_BY_ID # Get Opportunities Source: https://docs.useparagon.com/actionkit/integrations/lever/LEVER_GET_OPPORTUNITIES actionkit/openapi.json post /projects/{project_id}/actions/#LEVER_GET_OPPORTUNITIES # Get Opportunity By ID Source: https://docs.useparagon.com/actionkit/integrations/lever/LEVER_GET_OPPORTUNITY_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#LEVER_GET_OPPORTUNITY_BY_ID # Get Postings Source: https://docs.useparagon.com/actionkit/integrations/lever/LEVER_GET_POSTINGS actionkit/openapi.json post /projects/{project_id}/actions/#LEVER_GET_POSTINGS # Get Posting By ID Source: https://docs.useparagon.com/actionkit/integrations/lever/LEVER_GET_POSTING_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#LEVER_GET_POSTING_BY_ID # Update Contact Source: https://docs.useparagon.com/actionkit/integrations/lever/LEVER_UPDATE_CONTACT actionkit/openapi.json post /projects/{project_id}/actions/#LEVER_UPDATE_CONTACT # Update Posting Source: https://docs.useparagon.com/actionkit/integrations/lever/LEVER_UPDATE_POSTING actionkit/openapi.json post /projects/{project_id}/actions/#LEVER_UPDATE_POSTING # Archive Issue Source: https://docs.useparagon.com/actionkit/integrations/linear/LINEAR_ARCHIVE_ISSUE actionkit/openapi.json post /projects/{project_id}/actions/#LINEAR_ARCHIVE_ISSUE # Create Issue Source: https://docs.useparagon.com/actionkit/integrations/linear/LINEAR_CREATE_ISSUE actionkit/openapi.json post /projects/{project_id}/actions/#LINEAR_CREATE_ISSUE # Create Project Source: https://docs.useparagon.com/actionkit/integrations/linear/LINEAR_CREATE_PROJECT actionkit/openapi.json post /projects/{project_id}/actions/#LINEAR_CREATE_PROJECT # Create Sub Issue Source: https://docs.useparagon.com/actionkit/integrations/linear/LINEAR_CREATE_SUB_ISSUE actionkit/openapi.json post /projects/{project_id}/actions/#LINEAR_CREATE_SUB_ISSUE # Delete Issue Source: https://docs.useparagon.com/actionkit/integrations/linear/LINEAR_DELETE_ISSUE actionkit/openapi.json post /projects/{project_id}/actions/#LINEAR_DELETE_ISSUE # Delete Project Source: https://docs.useparagon.com/actionkit/integrations/linear/LINEAR_DELETE_PROJECT actionkit/openapi.json post /projects/{project_id}/actions/#LINEAR_DELETE_PROJECT # Get Issue By ID Source: https://docs.useparagon.com/actionkit/integrations/linear/LINEAR_GET_ISSUE_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#LINEAR_GET_ISSUE_BY_ID # Get Issue By Issue Identifier Source: https://docs.useparagon.com/actionkit/integrations/linear/LINEAR_GET_ISSUE_BY_ISSUE_IDENTIFIER actionkit/openapi.json post /projects/{project_id}/actions/#LINEAR_GET_ISSUE_BY_ISSUE_IDENTIFIER # Get Project By ID Source: https://docs.useparagon.com/actionkit/integrations/linear/LINEAR_GET_PROJECT_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#LINEAR_GET_PROJECT_BY_ID # Search Issue Source: https://docs.useparagon.com/actionkit/integrations/linear/LINEAR_SEARCH_ISSUE actionkit/openapi.json post /projects/{project_id}/actions/#LINEAR_SEARCH_ISSUE # Search Teams Source: https://docs.useparagon.com/actionkit/integrations/linear/LINEAR_SEARCH_TEAMS actionkit/openapi.json post /projects/{project_id}/actions/#LINEAR_SEARCH_TEAMS # Update Issue Source: https://docs.useparagon.com/actionkit/integrations/linear/LINEAR_UPDATE_ISSUE actionkit/openapi.json post /projects/{project_id}/actions/#LINEAR_UPDATE_ISSUE # Update Project Source: https://docs.useparagon.com/actionkit/integrations/linear/LINEAR_UPDATE_PROJECT actionkit/openapi.json post /projects/{project_id}/actions/#LINEAR_UPDATE_PROJECT # Create Post Source: https://docs.useparagon.com/actionkit/integrations/linkedin/LINKEDIN_CREATE_POST actionkit/openapi.json post /projects/{project_id}/actions/#LINKEDIN_CREATE_POST # Get Profile By ID Source: https://docs.useparagon.com/actionkit/integrations/linkedin/LINKEDIN_GET_PROFILE_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#LINKEDIN_GET_PROFILE_BY_ID # Add Contact To List Source: https://docs.useparagon.com/actionkit/integrations/mailchimp/MAILCHIMP_ADD_CONTACT_TO_LIST actionkit/openapi.json post /projects/{project_id}/actions/#MAILCHIMP_ADD_CONTACT_TO_LIST # Create Campaign Source: https://docs.useparagon.com/actionkit/integrations/mailchimp/MAILCHIMP_CREATE_CAMPAIGN actionkit/openapi.json post /projects/{project_id}/actions/#MAILCHIMP_CREATE_CAMPAIGN # Create List Source: https://docs.useparagon.com/actionkit/integrations/mailchimp/MAILCHIMP_CREATE_LIST actionkit/openapi.json post /projects/{project_id}/actions/#MAILCHIMP_CREATE_LIST # Delete Campaign By ID Source: https://docs.useparagon.com/actionkit/integrations/mailchimp/MAILCHIMP_DELETE_CAMPAIGN_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#MAILCHIMP_DELETE_CAMPAIGN_BY_ID # Get Campaign By ID Source: https://docs.useparagon.com/actionkit/integrations/mailchimp/MAILCHIMP_GET_CAMPAIGN_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#MAILCHIMP_GET_CAMPAIGN_BY_ID # Get Contacts From List Source: https://docs.useparagon.com/actionkit/integrations/mailchimp/MAILCHIMP_GET_CONTACTS_FROM_LIST actionkit/openapi.json post /projects/{project_id}/actions/#MAILCHIMP_GET_CONTACTS_FROM_LIST # Get List By ID Source: https://docs.useparagon.com/actionkit/integrations/mailchimp/MAILCHIMP_GET_LIST_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#MAILCHIMP_GET_LIST_BY_ID # Search Campaigns Source: https://docs.useparagon.com/actionkit/integrations/mailchimp/MAILCHIMP_SEARCH_CAMPAIGNS actionkit/openapi.json post /projects/{project_id}/actions/#MAILCHIMP_SEARCH_CAMPAIGNS # Search Lists Source: https://docs.useparagon.com/actionkit/integrations/mailchimp/MAILCHIMP_SEARCH_LISTS actionkit/openapi.json post /projects/{project_id}/actions/#MAILCHIMP_SEARCH_LISTS # Send Campaign Source: https://docs.useparagon.com/actionkit/integrations/mailchimp/MAILCHIMP_SEND_CAMPAIGN actionkit/openapi.json post /projects/{project_id}/actions/#MAILCHIMP_SEND_CAMPAIGN # Update Campaign Source: https://docs.useparagon.com/actionkit/integrations/mailchimp/MAILCHIMP_UPDATE_CAMPAIGN actionkit/openapi.json post /projects/{project_id}/actions/#MAILCHIMP_UPDATE_CAMPAIGN # Update Contact To List Source: https://docs.useparagon.com/actionkit/integrations/mailchimp/MAILCHIMP_UPDATE_CONTACT_TO_LIST actionkit/openapi.json post /projects/{project_id}/actions/#MAILCHIMP_UPDATE_CONTACT_TO_LIST # Add Leads To List Source: https://docs.useparagon.com/actionkit/integrations/marketo/MARKETO_ADD_LEADS_TO_LIST actionkit/openapi.json post /projects/{project_id}/actions/#MARKETO_ADD_LEADS_TO_LIST # Create Custom Object Source: https://docs.useparagon.com/actionkit/integrations/marketo/MARKETO_CREATE_CUSTOM_OBJECT actionkit/openapi.json post /projects/{project_id}/actions/#MARKETO_CREATE_CUSTOM_OBJECT # Create Or Update Lead Source: https://docs.useparagon.com/actionkit/integrations/marketo/MARKETO_CREATE_OR_UPDATE_LEAD actionkit/openapi.json post /projects/{project_id}/actions/#MARKETO_CREATE_OR_UPDATE_LEAD # Get Leads Source: https://docs.useparagon.com/actionkit/integrations/marketo/MARKETO_GET_LEADS actionkit/openapi.json post /projects/{project_id}/actions/#MARKETO_GET_LEADS # Get Lead By ID Source: https://docs.useparagon.com/actionkit/integrations/marketo/MARKETO_GET_LEAD_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#MARKETO_GET_LEAD_BY_ID # Channel List Source: https://docs.useparagon.com/actionkit/integrations/microsoftTeams/TEAMS_CHANNEL_LIST actionkit/openapi.json post /projects/{project_id}/actions/#TEAMS_CHANNEL_LIST # Get User By Email Source: https://docs.useparagon.com/actionkit/integrations/microsoftTeams/TEAMS_GET_USER_BY_EMAIL actionkit/openapi.json post /projects/{project_id}/actions/#TEAMS_GET_USER_BY_EMAIL # Joined Team List Source: https://docs.useparagon.com/actionkit/integrations/microsoftTeams/TEAMS_JOINED_TEAM_LIST actionkit/openapi.json post /projects/{project_id}/actions/#TEAMS_JOINED_TEAM_LIST # Member List Source: https://docs.useparagon.com/actionkit/integrations/microsoftTeams/TEAMS_MEMBER_LIST actionkit/openapi.json post /projects/{project_id}/actions/#TEAMS_MEMBER_LIST # Send Message In Channel Source: https://docs.useparagon.com/actionkit/integrations/microsoftTeams/TEAMS_SEND_MESSAGE_IN_CHANNEL actionkit/openapi.json post /projects/{project_id}/actions/#TEAMS_SEND_MESSAGE_IN_CHANNEL # Send Message In Chat Source: https://docs.useparagon.com/actionkit/integrations/microsoftTeams/TEAMS_SEND_MESSAGE_IN_CHAT actionkit/openapi.json post /projects/{project_id}/actions/#TEAMS_SEND_MESSAGE_IN_CHAT # Archive Item Source: https://docs.useparagon.com/actionkit/integrations/monday.com/MONDAY_ARCHIVE_ITEM actionkit/openapi.json post /projects/{project_id}/actions/#MONDAY_ARCHIVE_ITEM # Create Item Source: https://docs.useparagon.com/actionkit/integrations/monday.com/MONDAY_CREATE_ITEM actionkit/openapi.json post /projects/{project_id}/actions/#MONDAY_CREATE_ITEM # Create Subitem Source: https://docs.useparagon.com/actionkit/integrations/monday.com/MONDAY_CREATE_SUBITEM actionkit/openapi.json post /projects/{project_id}/actions/#MONDAY_CREATE_SUBITEM # Delete Item Source: https://docs.useparagon.com/actionkit/integrations/monday.com/MONDAY_DELETE_ITEM actionkit/openapi.json post /projects/{project_id}/actions/#MONDAY_DELETE_ITEM # Get Item By External ID With New Api Version Source: https://docs.useparagon.com/actionkit/integrations/monday.com/MONDAY_GET_ITEM_BY_EXTERNAL_ID_WITH_NEW_API_VERSION actionkit/openapi.json post /projects/{project_id}/actions/#MONDAY_GET_ITEM_BY_EXTERNAL_ID_WITH_NEW_API_VERSION # Get Item By ID With New Api Version Source: https://docs.useparagon.com/actionkit/integrations/monday.com/MONDAY_GET_ITEM_BY_ID_WITH_NEW_API_VERSION actionkit/openapi.json post /projects/{project_id}/actions/#MONDAY_GET_ITEM_BY_ID_WITH_NEW_API_VERSION # Search Items With New Api Version Source: https://docs.useparagon.com/actionkit/integrations/monday.com/MONDAY_SEARCH_ITEMS_WITH_NEW_API_VERSION actionkit/openapi.json post /projects/{project_id}/actions/#MONDAY_SEARCH_ITEMS_WITH_NEW_API_VERSION # Search Users Source: https://docs.useparagon.com/actionkit/integrations/monday.com/MONDAY_SEARCH_USERS actionkit/openapi.json post /projects/{project_id}/actions/#MONDAY_SEARCH_USERS # Update Item Source: https://docs.useparagon.com/actionkit/integrations/monday.com/MONDAY_UPDATE_ITEM actionkit/openapi.json post /projects/{project_id}/actions/#MONDAY_UPDATE_ITEM # Create Account Source: https://docs.useparagon.com/actionkit/integrations/netsuite/NETSUITE_CREATE_ACCOUNT actionkit/openapi.json post /projects/{project_id}/actions/#NETSUITE_CREATE_ACCOUNT # Create Bill Source: https://docs.useparagon.com/actionkit/integrations/netsuite/NETSUITE_CREATE_BILL actionkit/openapi.json post /projects/{project_id}/actions/#NETSUITE_CREATE_BILL # Create Tax Group Source: https://docs.useparagon.com/actionkit/integrations/netsuite/NETSUITE_CREATE_TAX_GROUP actionkit/openapi.json post /projects/{project_id}/actions/#NETSUITE_CREATE_TAX_GROUP # Create Vendor Source: https://docs.useparagon.com/actionkit/integrations/netsuite/NETSUITE_CREATE_VENDOR actionkit/openapi.json post /projects/{project_id}/actions/#NETSUITE_CREATE_VENDOR # Delete Account Source: https://docs.useparagon.com/actionkit/integrations/netsuite/NETSUITE_DELETE_ACCOUNT actionkit/openapi.json post /projects/{project_id}/actions/#NETSUITE_DELETE_ACCOUNT # Delete Bill Source: https://docs.useparagon.com/actionkit/integrations/netsuite/NETSUITE_DELETE_BILL actionkit/openapi.json post /projects/{project_id}/actions/#NETSUITE_DELETE_BILL # Delete Tax Group Source: https://docs.useparagon.com/actionkit/integrations/netsuite/NETSUITE_DELETE_TAX_GROUP actionkit/openapi.json post /projects/{project_id}/actions/#NETSUITE_DELETE_TAX_GROUP # Delete Vendor Source: https://docs.useparagon.com/actionkit/integrations/netsuite/NETSUITE_DELETE_VENDOR actionkit/openapi.json post /projects/{project_id}/actions/#NETSUITE_DELETE_VENDOR # Get Account By ID Source: https://docs.useparagon.com/actionkit/integrations/netsuite/NETSUITE_GET_ACCOUNT_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#NETSUITE_GET_ACCOUNT_BY_ID # Get Bill By ID Source: https://docs.useparagon.com/actionkit/integrations/netsuite/NETSUITE_GET_BILL_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#NETSUITE_GET_BILL_BY_ID # Get Payment Term By ID Source: https://docs.useparagon.com/actionkit/integrations/netsuite/NETSUITE_GET_PAYMENT_TERM_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#NETSUITE_GET_PAYMENT_TERM_BY_ID # Get Tax Group By ID Source: https://docs.useparagon.com/actionkit/integrations/netsuite/NETSUITE_GET_TAX_GROUP_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#NETSUITE_GET_TAX_GROUP_BY_ID # Get Vendor By ID Source: https://docs.useparagon.com/actionkit/integrations/netsuite/NETSUITE_GET_VENDOR_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#NETSUITE_GET_VENDOR_BY_ID # Search Accounts Source: https://docs.useparagon.com/actionkit/integrations/netsuite/NETSUITE_SEARCH_ACCOUNTS actionkit/openapi.json post /projects/{project_id}/actions/#NETSUITE_SEARCH_ACCOUNTS # Search Bills Source: https://docs.useparagon.com/actionkit/integrations/netsuite/NETSUITE_SEARCH_BILLS actionkit/openapi.json post /projects/{project_id}/actions/#NETSUITE_SEARCH_BILLS # Search Payment Terms Source: https://docs.useparagon.com/actionkit/integrations/netsuite/NETSUITE_SEARCH_PAYMENT_TERMS actionkit/openapi.json post /projects/{project_id}/actions/#NETSUITE_SEARCH_PAYMENT_TERMS # Search Posting Periods Source: https://docs.useparagon.com/actionkit/integrations/netsuite/NETSUITE_SEARCH_POSTING_PERIODS actionkit/openapi.json post /projects/{project_id}/actions/#NETSUITE_SEARCH_POSTING_PERIODS # Search Tax Codes Source: https://docs.useparagon.com/actionkit/integrations/netsuite/NETSUITE_SEARCH_TAX_CODES actionkit/openapi.json post /projects/{project_id}/actions/#NETSUITE_SEARCH_TAX_CODES # Search Vendors Source: https://docs.useparagon.com/actionkit/integrations/netsuite/NETSUITE_SEARCH_VENDORS actionkit/openapi.json post /projects/{project_id}/actions/#NETSUITE_SEARCH_VENDORS # Update Account Source: https://docs.useparagon.com/actionkit/integrations/netsuite/NETSUITE_UPDATE_ACCOUNT actionkit/openapi.json post /projects/{project_id}/actions/#NETSUITE_UPDATE_ACCOUNT # Update Bill Source: https://docs.useparagon.com/actionkit/integrations/netsuite/NETSUITE_UPDATE_BILL actionkit/openapi.json post /projects/{project_id}/actions/#NETSUITE_UPDATE_BILL # Update Tax Group Source: https://docs.useparagon.com/actionkit/integrations/netsuite/NETSUITE_UPDATE_TAX_GROUP actionkit/openapi.json post /projects/{project_id}/actions/#NETSUITE_UPDATE_TAX_GROUP # Update Vendor Source: https://docs.useparagon.com/actionkit/integrations/netsuite/NETSUITE_UPDATE_VENDOR actionkit/openapi.json post /projects/{project_id}/actions/#NETSUITE_UPDATE_VENDOR # Archive Page Source: https://docs.useparagon.com/actionkit/integrations/notion/NOTION_ARCHIVE_PAGE actionkit/openapi.json post /projects/{project_id}/actions/#NOTION_ARCHIVE_PAGE # Create Page Source: https://docs.useparagon.com/actionkit/integrations/notion/NOTION_CREATE_PAGE actionkit/openapi.json post /projects/{project_id}/actions/#NOTION_CREATE_PAGE # Create Page With Markdown Source: https://docs.useparagon.com/actionkit/integrations/notion/NOTION_CREATE_PAGE_WITH_MARKDOWN actionkit/openapi.json post /projects/{project_id}/actions/#NOTION_CREATE_PAGE_WITH_MARKDOWN # Delete Block Source: https://docs.useparagon.com/actionkit/integrations/notion/NOTION_DELETE_BLOCK actionkit/openapi.json post /projects/{project_id}/actions/#NOTION_DELETE_BLOCK # Get Block By ID Source: https://docs.useparagon.com/actionkit/integrations/notion/NOTION_GET_BLOCK_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#NOTION_GET_BLOCK_BY_ID # Get Page As Markdown Source: https://docs.useparagon.com/actionkit/integrations/notion/NOTION_GET_PAGE_AS_MARKDOWN actionkit/openapi.json post /projects/{project_id}/actions/#NOTION_GET_PAGE_AS_MARKDOWN # Get Page By ID Source: https://docs.useparagon.com/actionkit/integrations/notion/NOTION_GET_PAGE_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#NOTION_GET_PAGE_BY_ID # Get Page Content Source: https://docs.useparagon.com/actionkit/integrations/notion/NOTION_GET_PAGE_CONTENT actionkit/openapi.json post /projects/{project_id}/actions/#NOTION_GET_PAGE_CONTENT # Search Pages Source: https://docs.useparagon.com/actionkit/integrations/notion/NOTION_SEARCH_PAGES actionkit/openapi.json post /projects/{project_id}/actions/#NOTION_SEARCH_PAGES # Update Block Source: https://docs.useparagon.com/actionkit/integrations/notion/NOTION_UPDATE_BLOCK actionkit/openapi.json post /projects/{project_id}/actions/#NOTION_UPDATE_BLOCK # Update Page Source: https://docs.useparagon.com/actionkit/integrations/notion/NOTION_UPDATE_PAGE actionkit/openapi.json post /projects/{project_id}/actions/#NOTION_UPDATE_PAGE # Update Page With Markdown Source: https://docs.useparagon.com/actionkit/integrations/notion/NOTION_UPDATE_PAGE_WITH_MARKDOWN actionkit/openapi.json post /projects/{project_id}/actions/#NOTION_UPDATE_PAGE_WITH_MARKDOWN # Create Folder Source: https://docs.useparagon.com/actionkit/integrations/onedrive/ONEDRIVE_CREATE_FOLDER actionkit/openapi.json post /projects/{project_id}/actions/#ONEDRIVE_CREATE_FOLDER # Delete Folder Source: https://docs.useparagon.com/actionkit/integrations/onedrive/ONEDRIVE_DELETE_FOLDER actionkit/openapi.json post /projects/{project_id}/actions/#ONEDRIVE_DELETE_FOLDER # Get File By ID Source: https://docs.useparagon.com/actionkit/integrations/onedrive/ONEDRIVE_GET_FILE_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#ONEDRIVE_GET_FILE_BY_ID # Get Folder By ID Source: https://docs.useparagon.com/actionkit/integrations/onedrive/ONEDRIVE_GET_FOLDER_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#ONEDRIVE_GET_FOLDER_BY_ID # List Contents Source: https://docs.useparagon.com/actionkit/integrations/onedrive/ONEDRIVE_LIST_CONTENTS actionkit/openapi.json post /projects/{project_id}/actions/#ONEDRIVE_LIST_CONTENTS # Move Folder Source: https://docs.useparagon.com/actionkit/integrations/onedrive/ONEDRIVE_MOVE_FOLDER actionkit/openapi.json post /projects/{project_id}/actions/#ONEDRIVE_MOVE_FOLDER # Search Folders Source: https://docs.useparagon.com/actionkit/integrations/onedrive/ONEDRIVE_SEARCH_FOLDERS actionkit/openapi.json post /projects/{project_id}/actions/#ONEDRIVE_SEARCH_FOLDERS # Create Event Source: https://docs.useparagon.com/actionkit/integrations/outlook/OUTLOOK_CREATE_EVENT actionkit/openapi.json post /projects/{project_id}/actions/#OUTLOOK_CREATE_EVENT # Delete Event Source: https://docs.useparagon.com/actionkit/integrations/outlook/OUTLOOK_DELETE_EVENT actionkit/openapi.json post /projects/{project_id}/actions/#OUTLOOK_DELETE_EVENT # Get Events Source: https://docs.useparagon.com/actionkit/integrations/outlook/OUTLOOK_GET_EVENTS actionkit/openapi.json post /projects/{project_id}/actions/#OUTLOOK_GET_EVENTS # Get Event By ID Source: https://docs.useparagon.com/actionkit/integrations/outlook/OUTLOOK_GET_EVENT_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#OUTLOOK_GET_EVENT_BY_ID # Get Messages Source: https://docs.useparagon.com/actionkit/integrations/outlook/OUTLOOK_GET_MESSAGES actionkit/openapi.json post /projects/{project_id}/actions/#OUTLOOK_GET_MESSAGES # Send Message Source: https://docs.useparagon.com/actionkit/integrations/outlook/OUTLOOK_SEND_MESSAGE actionkit/openapi.json post /projects/{project_id}/actions/#OUTLOOK_SEND_MESSAGE # Update Event Source: https://docs.useparagon.com/actionkit/integrations/outlook/OUTLOOK_UPDATE_EVENT actionkit/openapi.json post /projects/{project_id}/actions/#OUTLOOK_UPDATE_EVENT # Add Prospect To Sequence Source: https://docs.useparagon.com/actionkit/integrations/outreach/OUTREACH_ADD_PROSPECT_TO_SEQUENCE actionkit/openapi.json post /projects/{project_id}/actions/#OUTREACH_ADD_PROSPECT_TO_SEQUENCE # Create Account Source: https://docs.useparagon.com/actionkit/integrations/outreach/OUTREACH_CREATE_ACCOUNT actionkit/openapi.json post /projects/{project_id}/actions/#OUTREACH_CREATE_ACCOUNT # Create Opportunity Source: https://docs.useparagon.com/actionkit/integrations/outreach/OUTREACH_CREATE_OPPORTUNITY actionkit/openapi.json post /projects/{project_id}/actions/#OUTREACH_CREATE_OPPORTUNITY # Create Prospect Source: https://docs.useparagon.com/actionkit/integrations/outreach/OUTREACH_CREATE_PROSPECT actionkit/openapi.json post /projects/{project_id}/actions/#OUTREACH_CREATE_PROSPECT # Get Accounts Source: https://docs.useparagon.com/actionkit/integrations/outreach/OUTREACH_GET_ACCOUNTS actionkit/openapi.json post /projects/{project_id}/actions/#OUTREACH_GET_ACCOUNTS # Get Account By ID Source: https://docs.useparagon.com/actionkit/integrations/outreach/OUTREACH_GET_ACCOUNT_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#OUTREACH_GET_ACCOUNT_BY_ID # Get Opportunities Source: https://docs.useparagon.com/actionkit/integrations/outreach/OUTREACH_GET_OPPORTUNITIES actionkit/openapi.json post /projects/{project_id}/actions/#OUTREACH_GET_OPPORTUNITIES # Get Opportunity By ID Source: https://docs.useparagon.com/actionkit/integrations/outreach/OUTREACH_GET_OPPORTUNITY_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#OUTREACH_GET_OPPORTUNITY_BY_ID # Get Prospects Source: https://docs.useparagon.com/actionkit/integrations/outreach/OUTREACH_GET_PROSPECTS actionkit/openapi.json post /projects/{project_id}/actions/#OUTREACH_GET_PROSPECTS # Get Prospect By ID Source: https://docs.useparagon.com/actionkit/integrations/outreach/OUTREACH_GET_PROSPECT_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#OUTREACH_GET_PROSPECT_BY_ID # Update Account Source: https://docs.useparagon.com/actionkit/integrations/outreach/OUTREACH_UPDATE_ACCOUNT actionkit/openapi.json post /projects/{project_id}/actions/#OUTREACH_UPDATE_ACCOUNT # Update Opportunity Source: https://docs.useparagon.com/actionkit/integrations/outreach/OUTREACH_UPDATE_OPPORTUNITY actionkit/openapi.json post /projects/{project_id}/actions/#OUTREACH_UPDATE_OPPORTUNITY # Update Prospect Source: https://docs.useparagon.com/actionkit/integrations/outreach/OUTREACH_UPDATE_PROSPECT actionkit/openapi.json post /projects/{project_id}/actions/#OUTREACH_UPDATE_PROSPECT # Doc Create Document Source: https://docs.useparagon.com/actionkit/integrations/pandadoc/PANDA_DOC_CREATE_DOCUMENT actionkit/openapi.json post /projects/{project_id}/actions/#PANDA_DOC_CREATE_DOCUMENT # Doc Delete Document Source: https://docs.useparagon.com/actionkit/integrations/pandadoc/PANDA_DOC_DELETE_DOCUMENT actionkit/openapi.json post /projects/{project_id}/actions/#PANDA_DOC_DELETE_DOCUMENT # Doc Get Document By ID Source: https://docs.useparagon.com/actionkit/integrations/pandadoc/PANDA_DOC_GET_DOCUMENT_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#PANDA_DOC_GET_DOCUMENT_BY_ID # Doc Search Documents Source: https://docs.useparagon.com/actionkit/integrations/pandadoc/PANDA_DOC_SEARCH_DOCUMENTS actionkit/openapi.json post /projects/{project_id}/actions/#PANDA_DOC_SEARCH_DOCUMENTS # Doc Send Document Source: https://docs.useparagon.com/actionkit/integrations/pandadoc/PANDA_DOC_SEND_DOCUMENT actionkit/openapi.json post /projects/{project_id}/actions/#PANDA_DOC_SEND_DOCUMENT # Doc Update Document Source: https://docs.useparagon.com/actionkit/integrations/pandadoc/PANDA_DOC_UPDATE_DOCUMENT actionkit/openapi.json post /projects/{project_id}/actions/#PANDA_DOC_UPDATE_DOCUMENT # Add Prospect To List Source: https://docs.useparagon.com/actionkit/integrations/pardot/PARDOT_ADD_PROSPECT_TO_LIST actionkit/openapi.json post /projects/{project_id}/actions/#PARDOT_ADD_PROSPECT_TO_LIST # Create Or Update Prospect Source: https://docs.useparagon.com/actionkit/integrations/pardot/PARDOT_CREATE_OR_UPDATE_PROSPECT actionkit/openapi.json post /projects/{project_id}/actions/#PARDOT_CREATE_OR_UPDATE_PROSPECT # Delete Prospect By ID Source: https://docs.useparagon.com/actionkit/integrations/pardot/PARDOT_DELETE_PROSPECT_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#PARDOT_DELETE_PROSPECT_BY_ID # Get Prospect By ID Source: https://docs.useparagon.com/actionkit/integrations/pardot/PARDOT_GET_PROSPECT_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#PARDOT_GET_PROSPECT_BY_ID # Remove Prospect From List Source: https://docs.useparagon.com/actionkit/integrations/pardot/PARDOT_REMOVE_PROSPECT_FROM_LIST actionkit/openapi.json post /projects/{project_id}/actions/#PARDOT_REMOVE_PROSPECT_FROM_LIST # Search Prospects Source: https://docs.useparagon.com/actionkit/integrations/pardot/PARDOT_SEARCH_PROSPECTS actionkit/openapi.json post /projects/{project_id}/actions/#PARDOT_SEARCH_PROSPECTS # Create Record Activities V2 Source: https://docs.useparagon.com/actionkit/integrations/pipedrive/PIPEDRIVE_CREATE_RECORD_ACTIVITIES_V2 actionkit/openapi.json post /projects/{project_id}/actions/#PIPEDRIVE_CREATE_RECORD_ACTIVITIES_V2 # Create Record Any Source: https://docs.useparagon.com/actionkit/integrations/pipedrive/PIPEDRIVE_CREATE_RECORD_ANY actionkit/openapi.json post /projects/{project_id}/actions/#PIPEDRIVE_CREATE_RECORD_ANY # Create Record Deals V2 Source: https://docs.useparagon.com/actionkit/integrations/pipedrive/PIPEDRIVE_CREATE_RECORD_DEALS_V2 actionkit/openapi.json post /projects/{project_id}/actions/#PIPEDRIVE_CREATE_RECORD_DEALS_V2 # Create Record Leads V2 Source: https://docs.useparagon.com/actionkit/integrations/pipedrive/PIPEDRIVE_CREATE_RECORD_LEADS_V2 actionkit/openapi.json post /projects/{project_id}/actions/#PIPEDRIVE_CREATE_RECORD_LEADS_V2 # Create Record Notes Source: https://docs.useparagon.com/actionkit/integrations/pipedrive/PIPEDRIVE_CREATE_RECORD_NOTES actionkit/openapi.json post /projects/{project_id}/actions/#PIPEDRIVE_CREATE_RECORD_NOTES # Create Record Organizations V2 Source: https://docs.useparagon.com/actionkit/integrations/pipedrive/PIPEDRIVE_CREATE_RECORD_ORGANIZATIONS_V2 actionkit/openapi.json post /projects/{project_id}/actions/#PIPEDRIVE_CREATE_RECORD_ORGANIZATIONS_V2 # Create Record Persons V2 Source: https://docs.useparagon.com/actionkit/integrations/pipedrive/PIPEDRIVE_CREATE_RECORD_PERSONS_V2 actionkit/openapi.json post /projects/{project_id}/actions/#PIPEDRIVE_CREATE_RECORD_PERSONS_V2 # Create Record Users Source: https://docs.useparagon.com/actionkit/integrations/pipedrive/PIPEDRIVE_CREATE_RECORD_USERS actionkit/openapi.json post /projects/{project_id}/actions/#PIPEDRIVE_CREATE_RECORD_USERS # Delete Record Activities V2 Source: https://docs.useparagon.com/actionkit/integrations/pipedrive/PIPEDRIVE_DELETE_RECORD_ACTIVITIES_V2 actionkit/openapi.json post /projects/{project_id}/actions/#PIPEDRIVE_DELETE_RECORD_ACTIVITIES_V2 # Delete Record Any Source: https://docs.useparagon.com/actionkit/integrations/pipedrive/PIPEDRIVE_DELETE_RECORD_ANY actionkit/openapi.json post /projects/{project_id}/actions/#PIPEDRIVE_DELETE_RECORD_ANY # Delete Record Deals V2 Source: https://docs.useparagon.com/actionkit/integrations/pipedrive/PIPEDRIVE_DELETE_RECORD_DEALS_V2 actionkit/openapi.json post /projects/{project_id}/actions/#PIPEDRIVE_DELETE_RECORD_DEALS_V2 # Delete Record Leads V2 Source: https://docs.useparagon.com/actionkit/integrations/pipedrive/PIPEDRIVE_DELETE_RECORD_LEADS_V2 actionkit/openapi.json post /projects/{project_id}/actions/#PIPEDRIVE_DELETE_RECORD_LEADS_V2 # Delete Record Notes Source: https://docs.useparagon.com/actionkit/integrations/pipedrive/PIPEDRIVE_DELETE_RECORD_NOTES actionkit/openapi.json post /projects/{project_id}/actions/#PIPEDRIVE_DELETE_RECORD_NOTES # Delete Record Organizations V2 Source: https://docs.useparagon.com/actionkit/integrations/pipedrive/PIPEDRIVE_DELETE_RECORD_ORGANIZATIONS_V2 actionkit/openapi.json post /projects/{project_id}/actions/#PIPEDRIVE_DELETE_RECORD_ORGANIZATIONS_V2 # Delete Record Persons V2 Source: https://docs.useparagon.com/actionkit/integrations/pipedrive/PIPEDRIVE_DELETE_RECORD_PERSONS_V2 actionkit/openapi.json post /projects/{project_id}/actions/#PIPEDRIVE_DELETE_RECORD_PERSONS_V2 # Delete Record Users Source: https://docs.useparagon.com/actionkit/integrations/pipedrive/PIPEDRIVE_DELETE_RECORD_USERS actionkit/openapi.json post /projects/{project_id}/actions/#PIPEDRIVE_DELETE_RECORD_USERS # Describe Action Schema Source: https://docs.useparagon.com/actionkit/integrations/pipedrive/PIPEDRIVE_DESCRIBE_ACTION_SCHEMA actionkit/openapi.json post /projects/{project_id}/actions/#PIPEDRIVE_DESCRIBE_ACTION_SCHEMA # Get Records Activities V2 Source: https://docs.useparagon.com/actionkit/integrations/pipedrive/PIPEDRIVE_GET_RECORDS_ACTIVITIES_V2 actionkit/openapi.json post /projects/{project_id}/actions/#PIPEDRIVE_GET_RECORDS_ACTIVITIES_V2 # Get Records Any Source: https://docs.useparagon.com/actionkit/integrations/pipedrive/PIPEDRIVE_GET_RECORDS_ANY actionkit/openapi.json post /projects/{project_id}/actions/#PIPEDRIVE_GET_RECORDS_ANY # Get Records Deals V2 Source: https://docs.useparagon.com/actionkit/integrations/pipedrive/PIPEDRIVE_GET_RECORDS_DEALS_V2 actionkit/openapi.json post /projects/{project_id}/actions/#PIPEDRIVE_GET_RECORDS_DEALS_V2 # Get Records Leads V2 Source: https://docs.useparagon.com/actionkit/integrations/pipedrive/PIPEDRIVE_GET_RECORDS_LEADS_V2 actionkit/openapi.json post /projects/{project_id}/actions/#PIPEDRIVE_GET_RECORDS_LEADS_V2 # Get Records Notes Source: https://docs.useparagon.com/actionkit/integrations/pipedrive/PIPEDRIVE_GET_RECORDS_NOTES actionkit/openapi.json post /projects/{project_id}/actions/#PIPEDRIVE_GET_RECORDS_NOTES # Get Records Organizations V2 Source: https://docs.useparagon.com/actionkit/integrations/pipedrive/PIPEDRIVE_GET_RECORDS_ORGANIZATIONS_V2 actionkit/openapi.json post /projects/{project_id}/actions/#PIPEDRIVE_GET_RECORDS_ORGANIZATIONS_V2 # Get Records Persons V2 Source: https://docs.useparagon.com/actionkit/integrations/pipedrive/PIPEDRIVE_GET_RECORDS_PERSONS_V2 actionkit/openapi.json post /projects/{project_id}/actions/#PIPEDRIVE_GET_RECORDS_PERSONS_V2 # Get Records Users Source: https://docs.useparagon.com/actionkit/integrations/pipedrive/PIPEDRIVE_GET_RECORDS_USERS actionkit/openapi.json post /projects/{project_id}/actions/#PIPEDRIVE_GET_RECORDS_USERS # Get Record By ID Activities V2 Source: https://docs.useparagon.com/actionkit/integrations/pipedrive/PIPEDRIVE_GET_RECORD_BY_ID_ACTIVITIES_V2 actionkit/openapi.json post /projects/{project_id}/actions/#PIPEDRIVE_GET_RECORD_BY_ID_ACTIVITIES_V2 # Get Record By ID Any Source: https://docs.useparagon.com/actionkit/integrations/pipedrive/PIPEDRIVE_GET_RECORD_BY_ID_ANY actionkit/openapi.json post /projects/{project_id}/actions/#PIPEDRIVE_GET_RECORD_BY_ID_ANY # Get Record By ID Deals V2 Source: https://docs.useparagon.com/actionkit/integrations/pipedrive/PIPEDRIVE_GET_RECORD_BY_ID_DEALS_V2 actionkit/openapi.json post /projects/{project_id}/actions/#PIPEDRIVE_GET_RECORD_BY_ID_DEALS_V2 # Get Record By ID Leads V2 Source: https://docs.useparagon.com/actionkit/integrations/pipedrive/PIPEDRIVE_GET_RECORD_BY_ID_LEADS_V2 actionkit/openapi.json post /projects/{project_id}/actions/#PIPEDRIVE_GET_RECORD_BY_ID_LEADS_V2 # Get Record By ID Notes Source: https://docs.useparagon.com/actionkit/integrations/pipedrive/PIPEDRIVE_GET_RECORD_BY_ID_NOTES actionkit/openapi.json post /projects/{project_id}/actions/#PIPEDRIVE_GET_RECORD_BY_ID_NOTES # Get Record By ID Organizations V2 Source: https://docs.useparagon.com/actionkit/integrations/pipedrive/PIPEDRIVE_GET_RECORD_BY_ID_ORGANIZATIONS_V2 actionkit/openapi.json post /projects/{project_id}/actions/#PIPEDRIVE_GET_RECORD_BY_ID_ORGANIZATIONS_V2 # Get Record By ID Persons V2 Source: https://docs.useparagon.com/actionkit/integrations/pipedrive/PIPEDRIVE_GET_RECORD_BY_ID_PERSONS_V2 actionkit/openapi.json post /projects/{project_id}/actions/#PIPEDRIVE_GET_RECORD_BY_ID_PERSONS_V2 # Get Record By ID Users Source: https://docs.useparagon.com/actionkit/integrations/pipedrive/PIPEDRIVE_GET_RECORD_BY_ID_USERS actionkit/openapi.json post /projects/{project_id}/actions/#PIPEDRIVE_GET_RECORD_BY_ID_USERS # Update Record Activities V2 Source: https://docs.useparagon.com/actionkit/integrations/pipedrive/PIPEDRIVE_UPDATE_RECORD_ACTIVITIES_V2 actionkit/openapi.json post /projects/{project_id}/actions/#PIPEDRIVE_UPDATE_RECORD_ACTIVITIES_V2 # Update Record Any Source: https://docs.useparagon.com/actionkit/integrations/pipedrive/PIPEDRIVE_UPDATE_RECORD_ANY actionkit/openapi.json post /projects/{project_id}/actions/#PIPEDRIVE_UPDATE_RECORD_ANY # Update Record Deals V2 Source: https://docs.useparagon.com/actionkit/integrations/pipedrive/PIPEDRIVE_UPDATE_RECORD_DEALS_V2 actionkit/openapi.json post /projects/{project_id}/actions/#PIPEDRIVE_UPDATE_RECORD_DEALS_V2 # Update Record Leads V2 Source: https://docs.useparagon.com/actionkit/integrations/pipedrive/PIPEDRIVE_UPDATE_RECORD_LEADS_V2 actionkit/openapi.json post /projects/{project_id}/actions/#PIPEDRIVE_UPDATE_RECORD_LEADS_V2 # Update Record Notes Source: https://docs.useparagon.com/actionkit/integrations/pipedrive/PIPEDRIVE_UPDATE_RECORD_NOTES actionkit/openapi.json post /projects/{project_id}/actions/#PIPEDRIVE_UPDATE_RECORD_NOTES # Update Record Organizations V2 Source: https://docs.useparagon.com/actionkit/integrations/pipedrive/PIPEDRIVE_UPDATE_RECORD_ORGANIZATIONS_V2 actionkit/openapi.json post /projects/{project_id}/actions/#PIPEDRIVE_UPDATE_RECORD_ORGANIZATIONS_V2 # Update Record Persons V2 Source: https://docs.useparagon.com/actionkit/integrations/pipedrive/PIPEDRIVE_UPDATE_RECORD_PERSONS_V2 actionkit/openapi.json post /projects/{project_id}/actions/#PIPEDRIVE_UPDATE_RECORD_PERSONS_V2 # Update Record Users Source: https://docs.useparagon.com/actionkit/integrations/pipedrive/PIPEDRIVE_UPDATE_RECORD_USERS actionkit/openapi.json post /projects/{project_id}/actions/#PIPEDRIVE_UPDATE_RECORD_USERS # Create Component Source: https://docs.useparagon.com/actionkit/integrations/productboard/PRODUCTBOARD_CREATE_COMPONENT actionkit/openapi.json post /projects/{project_id}/actions/#PRODUCTBOARD_CREATE_COMPONENT # Create Feature Source: https://docs.useparagon.com/actionkit/integrations/productboard/PRODUCTBOARD_CREATE_FEATURE actionkit/openapi.json post /projects/{project_id}/actions/#PRODUCTBOARD_CREATE_FEATURE # Delete Feature Source: https://docs.useparagon.com/actionkit/integrations/productboard/PRODUCTBOARD_DELETE_FEATURE actionkit/openapi.json post /projects/{project_id}/actions/#PRODUCTBOARD_DELETE_FEATURE # Get Component By ID Source: https://docs.useparagon.com/actionkit/integrations/productboard/PRODUCTBOARD_GET_COMPONENT_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#PRODUCTBOARD_GET_COMPONENT_BY_ID # Get Feature By ID Source: https://docs.useparagon.com/actionkit/integrations/productboard/PRODUCTBOARD_GET_FEATURE_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#PRODUCTBOARD_GET_FEATURE_BY_ID # Get Product By ID Source: https://docs.useparagon.com/actionkit/integrations/productboard/PRODUCTBOARD_GET_PRODUCT_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#PRODUCTBOARD_GET_PRODUCT_BY_ID # Update Component Source: https://docs.useparagon.com/actionkit/integrations/productboard/PRODUCTBOARD_UPDATE_COMPONENT actionkit/openapi.json post /projects/{project_id}/actions/#PRODUCTBOARD_UPDATE_COMPONENT # Update Feature Source: https://docs.useparagon.com/actionkit/integrations/productboard/PRODUCTBOARD_UPDATE_FEATURE actionkit/openapi.json post /projects/{project_id}/actions/#PRODUCTBOARD_UPDATE_FEATURE # Create Customer Source: https://docs.useparagon.com/actionkit/integrations/quickbooks/QUICKBOOKS_CREATE_CUSTOMER actionkit/openapi.json post /projects/{project_id}/actions/#QUICKBOOKS_CREATE_CUSTOMER # Create Invoice Source: https://docs.useparagon.com/actionkit/integrations/quickbooks/QUICKBOOKS_CREATE_INVOICE actionkit/openapi.json post /projects/{project_id}/actions/#QUICKBOOKS_CREATE_INVOICE # Create Payment Source: https://docs.useparagon.com/actionkit/integrations/quickbooks/QUICKBOOKS_CREATE_PAYMENT actionkit/openapi.json post /projects/{project_id}/actions/#QUICKBOOKS_CREATE_PAYMENT # Get Accounts Source: https://docs.useparagon.com/actionkit/integrations/quickbooks/QUICKBOOKS_GET_ACCOUNTS actionkit/openapi.json post /projects/{project_id}/actions/#QUICKBOOKS_GET_ACCOUNTS # Get Customers Source: https://docs.useparagon.com/actionkit/integrations/quickbooks/QUICKBOOKS_GET_CUSTOMERS actionkit/openapi.json post /projects/{project_id}/actions/#QUICKBOOKS_GET_CUSTOMERS # Get Invoices Source: https://docs.useparagon.com/actionkit/integrations/quickbooks/QUICKBOOKS_GET_INVOICES actionkit/openapi.json post /projects/{project_id}/actions/#QUICKBOOKS_GET_INVOICES # Get Payments Source: https://docs.useparagon.com/actionkit/integrations/quickbooks/QUICKBOOKS_GET_PAYMENTS actionkit/openapi.json post /projects/{project_id}/actions/#QUICKBOOKS_GET_PAYMENTS # Send Invoice Source: https://docs.useparagon.com/actionkit/integrations/quickbooks/QUICKBOOKS_SEND_INVOICE actionkit/openapi.json post /projects/{project_id}/actions/#QUICKBOOKS_SEND_INVOICE # Update Customer Source: https://docs.useparagon.com/actionkit/integrations/quickbooks/QUICKBOOKS_UPDATE_CUSTOMER actionkit/openapi.json post /projects/{project_id}/actions/#QUICKBOOKS_UPDATE_CUSTOMER # Update Invoice Source: https://docs.useparagon.com/actionkit/integrations/quickbooks/QUICKBOOKS_UPDATE_INVOICE actionkit/openapi.json post /projects/{project_id}/actions/#QUICKBOOKS_UPDATE_INVOICE # Intacct Create Bill Source: https://docs.useparagon.com/actionkit/integrations/sageintacct/SAGE_INTACCT_CREATE_BILL actionkit/openapi.json post /projects/{project_id}/actions/#SAGE_INTACCT_CREATE_BILL # Intacct Create Vendor Source: https://docs.useparagon.com/actionkit/integrations/sageintacct/SAGE_INTACCT_CREATE_VENDOR actionkit/openapi.json post /projects/{project_id}/actions/#SAGE_INTACCT_CREATE_VENDOR # Intacct Delete Bill Source: https://docs.useparagon.com/actionkit/integrations/sageintacct/SAGE_INTACCT_DELETE_BILL actionkit/openapi.json post /projects/{project_id}/actions/#SAGE_INTACCT_DELETE_BILL # Intacct Delete Vendor Source: https://docs.useparagon.com/actionkit/integrations/sageintacct/SAGE_INTACCT_DELETE_VENDOR actionkit/openapi.json post /projects/{project_id}/actions/#SAGE_INTACCT_DELETE_VENDOR # Intacct Get Account By ID Source: https://docs.useparagon.com/actionkit/integrations/sageintacct/SAGE_INTACCT_GET_ACCOUNT_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#SAGE_INTACCT_GET_ACCOUNT_BY_ID # Intacct Get Bills By ID Source: https://docs.useparagon.com/actionkit/integrations/sageintacct/SAGE_INTACCT_GET_BILLS_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#SAGE_INTACCT_GET_BILLS_BY_ID # Intacct Get Dimensions Source: https://docs.useparagon.com/actionkit/integrations/sageintacct/SAGE_INTACCT_GET_DIMENSIONS actionkit/openapi.json post /projects/{project_id}/actions/#SAGE_INTACCT_GET_DIMENSIONS # Intacct Get Payment Term By ID Source: https://docs.useparagon.com/actionkit/integrations/sageintacct/SAGE_INTACCT_GET_PAYMENT_TERM_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#SAGE_INTACCT_GET_PAYMENT_TERM_BY_ID # Intacct Get Vendor By ID Source: https://docs.useparagon.com/actionkit/integrations/sageintacct/SAGE_INTACCT_GET_VENDOR_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#SAGE_INTACCT_GET_VENDOR_BY_ID # Intacct Search Accounts Source: https://docs.useparagon.com/actionkit/integrations/sageintacct/SAGE_INTACCT_SEARCH_ACCOUNTS actionkit/openapi.json post /projects/{project_id}/actions/#SAGE_INTACCT_SEARCH_ACCOUNTS # Intacct Search Bills Source: https://docs.useparagon.com/actionkit/integrations/sageintacct/SAGE_INTACCT_SEARCH_BILLS actionkit/openapi.json post /projects/{project_id}/actions/#SAGE_INTACCT_SEARCH_BILLS # Intacct Search Payment Terms Source: https://docs.useparagon.com/actionkit/integrations/sageintacct/SAGE_INTACCT_SEARCH_PAYMENT_TERMS actionkit/openapi.json post /projects/{project_id}/actions/#SAGE_INTACCT_SEARCH_PAYMENT_TERMS # Intacct Search Vendors Source: https://docs.useparagon.com/actionkit/integrations/sageintacct/SAGE_INTACCT_SEARCH_VENDORS actionkit/openapi.json post /projects/{project_id}/actions/#SAGE_INTACCT_SEARCH_VENDORS # Intacct Search Vendor Types Source: https://docs.useparagon.com/actionkit/integrations/sageintacct/SAGE_INTACCT_SEARCH_VENDOR_TYPES actionkit/openapi.json post /projects/{project_id}/actions/#SAGE_INTACCT_SEARCH_VENDOR_TYPES # Intacct Update Bill Source: https://docs.useparagon.com/actionkit/integrations/sageintacct/SAGE_INTACCT_UPDATE_BILL actionkit/openapi.json post /projects/{project_id}/actions/#SAGE_INTACCT_UPDATE_BILL # Intacct Update Vendor Source: https://docs.useparagon.com/actionkit/integrations/sageintacct/SAGE_INTACCT_UPDATE_VENDOR actionkit/openapi.json post /projects/{project_id}/actions/#SAGE_INTACCT_UPDATE_VENDOR # Create Custom Field Account Source: https://docs.useparagon.com/actionkit/integrations/salesforce/SALESFORCE_CREATE_CUSTOM_FIELD_ACCOUNT actionkit/openapi.json post /projects/{project_id}/actions/#SALESFORCE_CREATE_CUSTOM_FIELD_ACCOUNT # Create Custom Field Any Source: https://docs.useparagon.com/actionkit/integrations/salesforce/SALESFORCE_CREATE_CUSTOM_FIELD_ANY actionkit/openapi.json post /projects/{project_id}/actions/#SALESFORCE_CREATE_CUSTOM_FIELD_ANY # Create Custom Field Contact Source: https://docs.useparagon.com/actionkit/integrations/salesforce/SALESFORCE_CREATE_CUSTOM_FIELD_CONTACT actionkit/openapi.json post /projects/{project_id}/actions/#SALESFORCE_CREATE_CUSTOM_FIELD_CONTACT # Create Custom Field Lead Source: https://docs.useparagon.com/actionkit/integrations/salesforce/SALESFORCE_CREATE_CUSTOM_FIELD_LEAD actionkit/openapi.json post /projects/{project_id}/actions/#SALESFORCE_CREATE_CUSTOM_FIELD_LEAD # Create Custom Field Opportunity Source: https://docs.useparagon.com/actionkit/integrations/salesforce/SALESFORCE_CREATE_CUSTOM_FIELD_OPPORTUNITY actionkit/openapi.json post /projects/{project_id}/actions/#SALESFORCE_CREATE_CUSTOM_FIELD_OPPORTUNITY # Create Custom Field Task Source: https://docs.useparagon.com/actionkit/integrations/salesforce/SALESFORCE_CREATE_CUSTOM_FIELD_TASK actionkit/openapi.json post /projects/{project_id}/actions/#SALESFORCE_CREATE_CUSTOM_FIELD_TASK # Create Custom Object Source: https://docs.useparagon.com/actionkit/integrations/salesforce/SALESFORCE_CREATE_CUSTOM_OBJECT actionkit/openapi.json post /projects/{project_id}/actions/#SALESFORCE_CREATE_CUSTOM_OBJECT # Create Record Account Source: https://docs.useparagon.com/actionkit/integrations/salesforce/SALESFORCE_CREATE_RECORD_ACCOUNT actionkit/openapi.json post /projects/{project_id}/actions/#SALESFORCE_CREATE_RECORD_ACCOUNT # Create Record Any Source: https://docs.useparagon.com/actionkit/integrations/salesforce/SALESFORCE_CREATE_RECORD_ANY actionkit/openapi.json post /projects/{project_id}/actions/#SALESFORCE_CREATE_RECORD_ANY # Create Record Contact Source: https://docs.useparagon.com/actionkit/integrations/salesforce/SALESFORCE_CREATE_RECORD_CONTACT actionkit/openapi.json post /projects/{project_id}/actions/#SALESFORCE_CREATE_RECORD_CONTACT # Create Record Lead Source: https://docs.useparagon.com/actionkit/integrations/salesforce/SALESFORCE_CREATE_RECORD_LEAD actionkit/openapi.json post /projects/{project_id}/actions/#SALESFORCE_CREATE_RECORD_LEAD # Create Record Opportunity Source: https://docs.useparagon.com/actionkit/integrations/salesforce/SALESFORCE_CREATE_RECORD_OPPORTUNITY actionkit/openapi.json post /projects/{project_id}/actions/#SALESFORCE_CREATE_RECORD_OPPORTUNITY # Create Record Task Source: https://docs.useparagon.com/actionkit/integrations/salesforce/SALESFORCE_CREATE_RECORD_TASK actionkit/openapi.json post /projects/{project_id}/actions/#SALESFORCE_CREATE_RECORD_TASK # Describe Action Schema Source: https://docs.useparagon.com/actionkit/integrations/salesforce/SALESFORCE_DESCRIBE_ACTION_SCHEMA actionkit/openapi.json post /projects/{project_id}/actions/#SALESFORCE_DESCRIBE_ACTION_SCHEMA # Get Record By ID Account Source: https://docs.useparagon.com/actionkit/integrations/salesforce/SALESFORCE_GET_RECORD_BY_ID_ACCOUNT actionkit/openapi.json post /projects/{project_id}/actions/#SALESFORCE_GET_RECORD_BY_ID_ACCOUNT # Get Record By ID Any Source: https://docs.useparagon.com/actionkit/integrations/salesforce/SALESFORCE_GET_RECORD_BY_ID_ANY actionkit/openapi.json post /projects/{project_id}/actions/#SALESFORCE_GET_RECORD_BY_ID_ANY # Get Record By ID Contact Source: https://docs.useparagon.com/actionkit/integrations/salesforce/SALESFORCE_GET_RECORD_BY_ID_CONTACT actionkit/openapi.json post /projects/{project_id}/actions/#SALESFORCE_GET_RECORD_BY_ID_CONTACT # Get Record By ID Lead Source: https://docs.useparagon.com/actionkit/integrations/salesforce/SALESFORCE_GET_RECORD_BY_ID_LEAD actionkit/openapi.json post /projects/{project_id}/actions/#SALESFORCE_GET_RECORD_BY_ID_LEAD # Get Record By ID Opportunity Source: https://docs.useparagon.com/actionkit/integrations/salesforce/SALESFORCE_GET_RECORD_BY_ID_OPPORTUNITY actionkit/openapi.json post /projects/{project_id}/actions/#SALESFORCE_GET_RECORD_BY_ID_OPPORTUNITY # Get Record By ID Task Source: https://docs.useparagon.com/actionkit/integrations/salesforce/SALESFORCE_GET_RECORD_BY_ID_TASK actionkit/openapi.json post /projects/{project_id}/actions/#SALESFORCE_GET_RECORD_BY_ID_TASK # Get Record By View ID Account Source: https://docs.useparagon.com/actionkit/integrations/salesforce/SALESFORCE_GET_RECORD_BY_VIEW_ID_ACCOUNT actionkit/openapi.json post /projects/{project_id}/actions/#SALESFORCE_GET_RECORD_BY_VIEW_ID_ACCOUNT # Get Record By View ID Any Source: https://docs.useparagon.com/actionkit/integrations/salesforce/SALESFORCE_GET_RECORD_BY_VIEW_ID_ANY actionkit/openapi.json post /projects/{project_id}/actions/#SALESFORCE_GET_RECORD_BY_VIEW_ID_ANY # Get Record By View ID Contact Source: https://docs.useparagon.com/actionkit/integrations/salesforce/SALESFORCE_GET_RECORD_BY_VIEW_ID_CONTACT actionkit/openapi.json post /projects/{project_id}/actions/#SALESFORCE_GET_RECORD_BY_VIEW_ID_CONTACT # Get Record By View ID Lead Source: https://docs.useparagon.com/actionkit/integrations/salesforce/SALESFORCE_GET_RECORD_BY_VIEW_ID_LEAD actionkit/openapi.json post /projects/{project_id}/actions/#SALESFORCE_GET_RECORD_BY_VIEW_ID_LEAD # Get Record By View ID Opportunity Source: https://docs.useparagon.com/actionkit/integrations/salesforce/SALESFORCE_GET_RECORD_BY_VIEW_ID_OPPORTUNITY actionkit/openapi.json post /projects/{project_id}/actions/#SALESFORCE_GET_RECORD_BY_VIEW_ID_OPPORTUNITY # Get Record By View ID Task Source: https://docs.useparagon.com/actionkit/integrations/salesforce/SALESFORCE_GET_RECORD_BY_VIEW_ID_TASK actionkit/openapi.json post /projects/{project_id}/actions/#SALESFORCE_GET_RECORD_BY_VIEW_ID_TASK # Search Records Account Source: https://docs.useparagon.com/actionkit/integrations/salesforce/SALESFORCE_SEARCH_RECORDS_ACCOUNT actionkit/openapi.json post /projects/{project_id}/actions/#SALESFORCE_SEARCH_RECORDS_ACCOUNT # Search Records Any Source: https://docs.useparagon.com/actionkit/integrations/salesforce/SALESFORCE_SEARCH_RECORDS_ANY actionkit/openapi.json post /projects/{project_id}/actions/#SALESFORCE_SEARCH_RECORDS_ANY # Search Records Contact Source: https://docs.useparagon.com/actionkit/integrations/salesforce/SALESFORCE_SEARCH_RECORDS_CONTACT actionkit/openapi.json post /projects/{project_id}/actions/#SALESFORCE_SEARCH_RECORDS_CONTACT # Search Records Lead Source: https://docs.useparagon.com/actionkit/integrations/salesforce/SALESFORCE_SEARCH_RECORDS_LEAD actionkit/openapi.json post /projects/{project_id}/actions/#SALESFORCE_SEARCH_RECORDS_LEAD # Search Records Opportunity Source: https://docs.useparagon.com/actionkit/integrations/salesforce/SALESFORCE_SEARCH_RECORDS_OPPORTUNITY actionkit/openapi.json post /projects/{project_id}/actions/#SALESFORCE_SEARCH_RECORDS_OPPORTUNITY # Search Records Task Source: https://docs.useparagon.com/actionkit/integrations/salesforce/SALESFORCE_SEARCH_RECORDS_TASK actionkit/openapi.json post /projects/{project_id}/actions/#SALESFORCE_SEARCH_RECORDS_TASK # Update Record Account Source: https://docs.useparagon.com/actionkit/integrations/salesforce/SALESFORCE_UPDATE_RECORD_ACCOUNT actionkit/openapi.json post /projects/{project_id}/actions/#SALESFORCE_UPDATE_RECORD_ACCOUNT # Update Record Any Source: https://docs.useparagon.com/actionkit/integrations/salesforce/SALESFORCE_UPDATE_RECORD_ANY actionkit/openapi.json post /projects/{project_id}/actions/#SALESFORCE_UPDATE_RECORD_ANY # Update Record Contact Source: https://docs.useparagon.com/actionkit/integrations/salesforce/SALESFORCE_UPDATE_RECORD_CONTACT actionkit/openapi.json post /projects/{project_id}/actions/#SALESFORCE_UPDATE_RECORD_CONTACT # Update Record Lead Source: https://docs.useparagon.com/actionkit/integrations/salesforce/SALESFORCE_UPDATE_RECORD_LEAD actionkit/openapi.json post /projects/{project_id}/actions/#SALESFORCE_UPDATE_RECORD_LEAD # Update Record Opportunity Source: https://docs.useparagon.com/actionkit/integrations/salesforce/SALESFORCE_UPDATE_RECORD_OPPORTUNITY actionkit/openapi.json post /projects/{project_id}/actions/#SALESFORCE_UPDATE_RECORD_OPPORTUNITY # Update Record Task Source: https://docs.useparagon.com/actionkit/integrations/salesforce/SALESFORCE_UPDATE_RECORD_TASK actionkit/openapi.json post /projects/{project_id}/actions/#SALESFORCE_UPDATE_RECORD_TASK # Write SOQL Query Source: https://docs.useparagon.com/actionkit/integrations/salesforce/SALESFORCE_WRITE_SOQL_QUERY actionkit/openapi.json post /projects/{project_id}/actions/#SALESFORCE_WRITE_SOQL_QUERY # Create Supplier Invoice Source: https://docs.useparagon.com/actionkit/integrations/saps4hana/SAP_CREATE_SUPPLIER_INVOICE actionkit/openapi.json post /projects/{project_id}/actions/#SAP_CREATE_SUPPLIER_INVOICE # Delete Supplier Invoice Source: https://docs.useparagon.com/actionkit/integrations/saps4hana/SAP_DELETE_SUPPLIER_INVOICE actionkit/openapi.json post /projects/{project_id}/actions/#SAP_DELETE_SUPPLIER_INVOICE # Get Customer By ID Source: https://docs.useparagon.com/actionkit/integrations/saps4hana/SAP_GET_CUSTOMER_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#SAP_GET_CUSTOMER_BY_ID # Get Supplier By ID Source: https://docs.useparagon.com/actionkit/integrations/saps4hana/SAP_GET_SUPPLIER_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#SAP_GET_SUPPLIER_BY_ID # Get Supplier Invoice By ID Source: https://docs.useparagon.com/actionkit/integrations/saps4hana/SAP_GET_SUPPLIER_INVOICE_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#SAP_GET_SUPPLIER_INVOICE_BY_ID # Search Customers Source: https://docs.useparagon.com/actionkit/integrations/saps4hana/SAP_SEARCH_CUSTOMERS actionkit/openapi.json post /projects/{project_id}/actions/#SAP_SEARCH_CUSTOMERS # Search Suppliers Source: https://docs.useparagon.com/actionkit/integrations/saps4hana/SAP_SEARCH_SUPPLIERS actionkit/openapi.json post /projects/{project_id}/actions/#SAP_SEARCH_SUPPLIERS # Search Supplier Invoices Source: https://docs.useparagon.com/actionkit/integrations/saps4hana/SAP_SEARCH_SUPPLIER_INVOICES actionkit/openapi.json post /projects/{project_id}/actions/#SAP_SEARCH_SUPPLIER_INVOICES # Update Customer Source: https://docs.useparagon.com/actionkit/integrations/saps4hana/SAP_UPDATE_CUSTOMER actionkit/openapi.json post /projects/{project_id}/actions/#SAP_UPDATE_CUSTOMER # Update Supplier Source: https://docs.useparagon.com/actionkit/integrations/saps4hana/SAP_UPDATE_SUPPLIER actionkit/openapi.json post /projects/{project_id}/actions/#SAP_UPDATE_SUPPLIER # Create Ticket Source: https://docs.useparagon.com/actionkit/integrations/servicenow/SERVICENOW_CREATE_TICKET actionkit/openapi.json post /projects/{project_id}/actions/#SERVICENOW_CREATE_TICKET # Get Tickets Source: https://docs.useparagon.com/actionkit/integrations/servicenow/SERVICENOW_GET_TICKETS actionkit/openapi.json post /projects/{project_id}/actions/#SERVICENOW_GET_TICKETS # Get Ticket By ID Source: https://docs.useparagon.com/actionkit/integrations/servicenow/SERVICENOW_GET_TICKET_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#SERVICENOW_GET_TICKET_BY_ID # Update Ticket Source: https://docs.useparagon.com/actionkit/integrations/servicenow/SERVICENOW_UPDATE_TICKET actionkit/openapi.json post /projects/{project_id}/actions/#SERVICENOW_UPDATE_TICKET # Create Item Source: https://docs.useparagon.com/actionkit/integrations/sharepoint/SHAREPOINT_CREATE_ITEM actionkit/openapi.json post /projects/{project_id}/actions/#SHAREPOINT_CREATE_ITEM # Create List Source: https://docs.useparagon.com/actionkit/integrations/sharepoint/SHAREPOINT_CREATE_LIST actionkit/openapi.json post /projects/{project_id}/actions/#SHAREPOINT_CREATE_LIST # Delete Item Source: https://docs.useparagon.com/actionkit/integrations/sharepoint/SHAREPOINT_DELETE_ITEM actionkit/openapi.json post /projects/{project_id}/actions/#SHAREPOINT_DELETE_ITEM # Get Items In A List Source: https://docs.useparagon.com/actionkit/integrations/sharepoint/SHAREPOINT_GET_ITEMS_IN_A_LIST actionkit/openapi.json post /projects/{project_id}/actions/#SHAREPOINT_GET_ITEMS_IN_A_LIST # Get Item By ID Source: https://docs.useparagon.com/actionkit/integrations/sharepoint/SHAREPOINT_GET_ITEM_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#SHAREPOINT_GET_ITEM_BY_ID # Get Lists Source: https://docs.useparagon.com/actionkit/integrations/sharepoint/SHAREPOINT_GET_LISTS actionkit/openapi.json post /projects/{project_id}/actions/#SHAREPOINT_GET_LISTS # Get List By ID Source: https://docs.useparagon.com/actionkit/integrations/sharepoint/SHAREPOINT_GET_LIST_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#SHAREPOINT_GET_LIST_BY_ID # Get List Columns Source: https://docs.useparagon.com/actionkit/integrations/sharepoint/SHAREPOINT_GET_LIST_COLUMNS actionkit/openapi.json post /projects/{project_id}/actions/#SHAREPOINT_GET_LIST_COLUMNS # Update Item Source: https://docs.useparagon.com/actionkit/integrations/sharepoint/SHAREPOINT_UPDATE_ITEM actionkit/openapi.json post /projects/{project_id}/actions/#SHAREPOINT_UPDATE_ITEM # Create Customer Source: https://docs.useparagon.com/actionkit/integrations/shopify/SHOPIFY_CREATE_CUSTOMER actionkit/openapi.json post /projects/{project_id}/actions/#SHOPIFY_CREATE_CUSTOMER # Create Order Source: https://docs.useparagon.com/actionkit/integrations/shopify/SHOPIFY_CREATE_ORDER actionkit/openapi.json post /projects/{project_id}/actions/#SHOPIFY_CREATE_ORDER # Create Product Source: https://docs.useparagon.com/actionkit/integrations/shopify/SHOPIFY_CREATE_PRODUCT actionkit/openapi.json post /projects/{project_id}/actions/#SHOPIFY_CREATE_PRODUCT # Create Product GRAPHQL Source: https://docs.useparagon.com/actionkit/integrations/shopify/SHOPIFY_CREATE_PRODUCT_GRAPHQL actionkit/openapi.json post /projects/{project_id}/actions/#SHOPIFY_CREATE_PRODUCT_GRAPHQL # Get Abandoned Carts Source: https://docs.useparagon.com/actionkit/integrations/shopify/SHOPIFY_GET_ABANDONED_CARTS actionkit/openapi.json post /projects/{project_id}/actions/#SHOPIFY_GET_ABANDONED_CARTS # Get Customers Source: https://docs.useparagon.com/actionkit/integrations/shopify/SHOPIFY_GET_CUSTOMERS actionkit/openapi.json post /projects/{project_id}/actions/#SHOPIFY_GET_CUSTOMERS # Get Orders Source: https://docs.useparagon.com/actionkit/integrations/shopify/SHOPIFY_GET_ORDERS actionkit/openapi.json post /projects/{project_id}/actions/#SHOPIFY_GET_ORDERS # Get Products Source: https://docs.useparagon.com/actionkit/integrations/shopify/SHOPIFY_GET_PRODUCTS actionkit/openapi.json post /projects/{project_id}/actions/#SHOPIFY_GET_PRODUCTS # Get Products GRAPHQL Source: https://docs.useparagon.com/actionkit/integrations/shopify/SHOPIFY_GET_PRODUCTS_GRAPHQL actionkit/openapi.json post /projects/{project_id}/actions/#SHOPIFY_GET_PRODUCTS_GRAPHQL # Search Customers Source: https://docs.useparagon.com/actionkit/integrations/shopify/SHOPIFY_SEARCH_CUSTOMERS actionkit/openapi.json post /projects/{project_id}/actions/#SHOPIFY_SEARCH_CUSTOMERS # Update Customer Source: https://docs.useparagon.com/actionkit/integrations/shopify/SHOPIFY_UPDATE_CUSTOMER actionkit/openapi.json post /projects/{project_id}/actions/#SHOPIFY_UPDATE_CUSTOMER # Update Order Source: https://docs.useparagon.com/actionkit/integrations/shopify/SHOPIFY_UPDATE_ORDER actionkit/openapi.json post /projects/{project_id}/actions/#SHOPIFY_UPDATE_ORDER # Update Product Source: https://docs.useparagon.com/actionkit/integrations/shopify/SHOPIFY_UPDATE_PRODUCT actionkit/openapi.json post /projects/{project_id}/actions/#SHOPIFY_UPDATE_PRODUCT # Update Product GRAPHQL Source: https://docs.useparagon.com/actionkit/integrations/shopify/SHOPIFY_UPDATE_PRODUCT_GRAPHQL actionkit/openapi.json post /projects/{project_id}/actions/#SHOPIFY_UPDATE_PRODUCT_GRAPHQL # Get Users By Name Source: https://docs.useparagon.com/actionkit/integrations/slack/SLACK_GET_USERS_BY_NAME actionkit/openapi.json post /projects/{project_id}/actions/#SLACK_GET_USERS_BY_NAME # Get User By Email Source: https://docs.useparagon.com/actionkit/integrations/slack/SLACK_GET_USER_BY_EMAIL actionkit/openapi.json post /projects/{project_id}/actions/#SLACK_GET_USER_BY_EMAIL # List Channels Source: https://docs.useparagon.com/actionkit/integrations/slack/SLACK_LIST_CHANNELS actionkit/openapi.json post /projects/{project_id}/actions/#SLACK_LIST_CHANNELS # List Members Source: https://docs.useparagon.com/actionkit/integrations/slack/SLACK_LIST_MEMBERS actionkit/openapi.json post /projects/{project_id}/actions/#SLACK_LIST_MEMBERS # Search Messages Source: https://docs.useparagon.com/actionkit/integrations/slack/SLACK_SEARCH_MESSAGES actionkit/openapi.json post /projects/{project_id}/actions/#SLACK_SEARCH_MESSAGES # Send Direct Message Source: https://docs.useparagon.com/actionkit/integrations/slack/SLACK_SEND_DIRECT_MESSAGE actionkit/openapi.json post /projects/{project_id}/actions/#SLACK_SEND_DIRECT_MESSAGE # Send Message Source: https://docs.useparagon.com/actionkit/integrations/slack/SLACK_SEND_MESSAGE actionkit/openapi.json post /projects/{project_id}/actions/#SLACK_SEND_MESSAGE # Create Customer Source: https://docs.useparagon.com/actionkit/integrations/stripe/STRIPE_CREATE_CUSTOMER actionkit/openapi.json post /projects/{project_id}/actions/#STRIPE_CREATE_CUSTOMER # Create Product Source: https://docs.useparagon.com/actionkit/integrations/stripe/STRIPE_CREATE_PRODUCT actionkit/openapi.json post /projects/{project_id}/actions/#STRIPE_CREATE_PRODUCT # Create Subscription Source: https://docs.useparagon.com/actionkit/integrations/stripe/STRIPE_CREATE_SUBSCRIPTION actionkit/openapi.json post /projects/{project_id}/actions/#STRIPE_CREATE_SUBSCRIPTION # Get Balance Transactions Source: https://docs.useparagon.com/actionkit/integrations/stripe/STRIPE_GET_BALANCE_TRANSACTIONS actionkit/openapi.json post /projects/{project_id}/actions/#STRIPE_GET_BALANCE_TRANSACTIONS # Get Customers Source: https://docs.useparagon.com/actionkit/integrations/stripe/STRIPE_GET_CUSTOMERS actionkit/openapi.json post /projects/{project_id}/actions/#STRIPE_GET_CUSTOMERS # Get Customer By ID Source: https://docs.useparagon.com/actionkit/integrations/stripe/STRIPE_GET_CUSTOMER_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#STRIPE_GET_CUSTOMER_BY_ID # Get Plans Source: https://docs.useparagon.com/actionkit/integrations/stripe/STRIPE_GET_PLANS actionkit/openapi.json post /projects/{project_id}/actions/#STRIPE_GET_PLANS # Get Products Source: https://docs.useparagon.com/actionkit/integrations/stripe/STRIPE_GET_PRODUCTS actionkit/openapi.json post /projects/{project_id}/actions/#STRIPE_GET_PRODUCTS # Get Product By ID Source: https://docs.useparagon.com/actionkit/integrations/stripe/STRIPE_GET_PRODUCT_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#STRIPE_GET_PRODUCT_BY_ID # Get Subscriptions Source: https://docs.useparagon.com/actionkit/integrations/stripe/STRIPE_GET_SUBSCRIPTIONS actionkit/openapi.json post /projects/{project_id}/actions/#STRIPE_GET_SUBSCRIPTIONS # Update Customer Source: https://docs.useparagon.com/actionkit/integrations/stripe/STRIPE_UPDATE_CUSTOMER actionkit/openapi.json post /projects/{project_id}/actions/#STRIPE_UPDATE_CUSTOMER # Create Card Source: https://docs.useparagon.com/actionkit/integrations/trello/TRELLO_CREATE_CARD actionkit/openapi.json post /projects/{project_id}/actions/#TRELLO_CREATE_CARD # Delete Card Source: https://docs.useparagon.com/actionkit/integrations/trello/TRELLO_DELETE_CARD actionkit/openapi.json post /projects/{project_id}/actions/#TRELLO_DELETE_CARD # Get Boards Member Belong To Source: https://docs.useparagon.com/actionkit/integrations/trello/TRELLO_GET_BOARDS_MEMBER_BELONG_TO actionkit/openapi.json post /projects/{project_id}/actions/#TRELLO_GET_BOARDS_MEMBER_BELONG_TO # Get Cards In Board Source: https://docs.useparagon.com/actionkit/integrations/trello/TRELLO_GET_CARDS_IN_BOARD actionkit/openapi.json post /projects/{project_id}/actions/#TRELLO_GET_CARDS_IN_BOARD # Get Lists In Board Source: https://docs.useparagon.com/actionkit/integrations/trello/TRELLO_GET_LISTS_IN_BOARD actionkit/openapi.json post /projects/{project_id}/actions/#TRELLO_GET_LISTS_IN_BOARD # Search Boards Source: https://docs.useparagon.com/actionkit/integrations/trello/TRELLO_SEARCH_BOARDS actionkit/openapi.json post /projects/{project_id}/actions/#TRELLO_SEARCH_BOARDS # Search Cards Source: https://docs.useparagon.com/actionkit/integrations/trello/TRELLO_SEARCH_CARDS actionkit/openapi.json post /projects/{project_id}/actions/#TRELLO_SEARCH_CARDS # Update Card Source: https://docs.useparagon.com/actionkit/integrations/trello/TRELLO_UPDATE_CARD actionkit/openapi.json post /projects/{project_id}/actions/#TRELLO_UPDATE_CARD # Create Customer Source: https://docs.useparagon.com/actionkit/integrations/xero/XERO_CREATE_CUSTOMER actionkit/openapi.json post /projects/{project_id}/actions/#XERO_CREATE_CUSTOMER # Create Invoice Source: https://docs.useparagon.com/actionkit/integrations/xero/XERO_CREATE_INVOICE actionkit/openapi.json post /projects/{project_id}/actions/#XERO_CREATE_INVOICE # Create Payment Source: https://docs.useparagon.com/actionkit/integrations/xero/XERO_CREATE_PAYMENT actionkit/openapi.json post /projects/{project_id}/actions/#XERO_CREATE_PAYMENT # Get Accounts Source: https://docs.useparagon.com/actionkit/integrations/xero/XERO_GET_ACCOUNTS actionkit/openapi.json post /projects/{project_id}/actions/#XERO_GET_ACCOUNTS # Get Contacts Source: https://docs.useparagon.com/actionkit/integrations/xero/XERO_GET_CONTACTS actionkit/openapi.json post /projects/{project_id}/actions/#XERO_GET_CONTACTS # Get Invoices Source: https://docs.useparagon.com/actionkit/integrations/xero/XERO_GET_INVOICES actionkit/openapi.json post /projects/{project_id}/actions/#XERO_GET_INVOICES # Get Payments Source: https://docs.useparagon.com/actionkit/integrations/xero/XERO_GET_PAYMENTS actionkit/openapi.json post /projects/{project_id}/actions/#XERO_GET_PAYMENTS # Send Invoice Source: https://docs.useparagon.com/actionkit/integrations/xero/XERO_SEND_INVOICE actionkit/openapi.json post /projects/{project_id}/actions/#XERO_SEND_INVOICE # Update Customer Source: https://docs.useparagon.com/actionkit/integrations/xero/XERO_UPDATE_CUSTOMER actionkit/openapi.json post /projects/{project_id}/actions/#XERO_UPDATE_CUSTOMER # Update Invoice Source: https://docs.useparagon.com/actionkit/integrations/xero/XERO_UPDATE_INVOICE actionkit/openapi.json post /projects/{project_id}/actions/#XERO_UPDATE_INVOICE # Add Comment To Ticket Source: https://docs.useparagon.com/actionkit/integrations/zendesk/ZENDESK_ADD_COMMENT_TO_TICKET actionkit/openapi.json post /projects/{project_id}/actions/#ZENDESK_ADD_COMMENT_TO_TICKET # Create Ticket Source: https://docs.useparagon.com/actionkit/integrations/zendesk/ZENDESK_CREATE_TICKET actionkit/openapi.json post /projects/{project_id}/actions/#ZENDESK_CREATE_TICKET # Create User Source: https://docs.useparagon.com/actionkit/integrations/zendesk/ZENDESK_CREATE_USER actionkit/openapi.json post /projects/{project_id}/actions/#ZENDESK_CREATE_USER # Get Ticket Audits Source: https://docs.useparagon.com/actionkit/integrations/zendesk/ZENDESK_GET_TICKET_AUDITS actionkit/openapi.json post /projects/{project_id}/actions/#ZENDESK_GET_TICKET_AUDITS # Get Ticket By ID Source: https://docs.useparagon.com/actionkit/integrations/zendesk/ZENDESK_GET_TICKET_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#ZENDESK_GET_TICKET_BY_ID # Get Ticket Fields Source: https://docs.useparagon.com/actionkit/integrations/zendesk/ZENDESK_GET_TICKET_FIELDS actionkit/openapi.json post /projects/{project_id}/actions/#ZENDESK_GET_TICKET_FIELDS # Get User By ID Source: https://docs.useparagon.com/actionkit/integrations/zendesk/ZENDESK_GET_USER_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#ZENDESK_GET_USER_BY_ID # Search Tickets Source: https://docs.useparagon.com/actionkit/integrations/zendesk/ZENDESK_SEARCH_TICKETS actionkit/openapi.json post /projects/{project_id}/actions/#ZENDESK_SEARCH_TICKETS # Search Users Source: https://docs.useparagon.com/actionkit/integrations/zendesk/ZENDESK_SEARCH_USERS actionkit/openapi.json post /projects/{project_id}/actions/#ZENDESK_SEARCH_USERS # Update Ticket Source: https://docs.useparagon.com/actionkit/integrations/zendesk/ZENDESK_UPDATE_TICKET actionkit/openapi.json post /projects/{project_id}/actions/#ZENDESK_UPDATE_TICKET # Update User Source: https://docs.useparagon.com/actionkit/integrations/zendesk/ZENDESK_UPDATE_USER actionkit/openapi.json post /projects/{project_id}/actions/#ZENDESK_UPDATE_USER # Add Meeting Registrant Source: https://docs.useparagon.com/actionkit/integrations/zoom/ZOOM_ADD_MEETING_REGISTRANT actionkit/openapi.json post /projects/{project_id}/actions/#ZOOM_ADD_MEETING_REGISTRANT # Create Meeting Source: https://docs.useparagon.com/actionkit/integrations/zoom/ZOOM_CREATE_MEETING actionkit/openapi.json post /projects/{project_id}/actions/#ZOOM_CREATE_MEETING # Delete Meeting Source: https://docs.useparagon.com/actionkit/integrations/zoom/ZOOM_DELETE_MEETING actionkit/openapi.json post /projects/{project_id}/actions/#ZOOM_DELETE_MEETING # Delete Meeting Registrant Source: https://docs.useparagon.com/actionkit/integrations/zoom/ZOOM_DELETE_MEETING_REGISTRANT actionkit/openapi.json post /projects/{project_id}/actions/#ZOOM_DELETE_MEETING_REGISTRANT # Get Meeting Source: https://docs.useparagon.com/actionkit/integrations/zoom/ZOOM_GET_MEETING actionkit/openapi.json post /projects/{project_id}/actions/#ZOOM_GET_MEETING # Get Meeting By ID Source: https://docs.useparagon.com/actionkit/integrations/zoom/ZOOM_GET_MEETING_BY_ID actionkit/openapi.json post /projects/{project_id}/actions/#ZOOM_GET_MEETING_BY_ID # Get Meeting Registrant Source: https://docs.useparagon.com/actionkit/integrations/zoom/ZOOM_GET_MEETING_REGISTRANT actionkit/openapi.json post /projects/{project_id}/actions/#ZOOM_GET_MEETING_REGISTRANT # Get Recording By Meeting ID Source: https://docs.useparagon.com/actionkit/integrations/zoom/ZOOM_GET_RECORDING_BY_MEETING_ID actionkit/openapi.json post /projects/{project_id}/actions/#ZOOM_GET_RECORDING_BY_MEETING_ID # Search Recording Source: https://docs.useparagon.com/actionkit/integrations/zoom/ZOOM_SEARCH_RECORDING actionkit/openapi.json post /projects/{project_id}/actions/#ZOOM_SEARCH_RECORDING # Update Meeting Source: https://docs.useparagon.com/actionkit/integrations/zoom/ZOOM_UPDATE_MEETING actionkit/openapi.json post /projects/{project_id}/actions/#ZOOM_UPDATE_MEETING # ActionKit Source: https://docs.useparagon.com/actionkit/overview ActionKit is an API to give your agentic AI product access to Paragon's catalog of pre-built Integration Actions as tools. Page cover image **ActionKit** exposes thousands of pre-built operations (Actions) across integrations through *one* consistent interface and a synchronous (real-time) endpoint. The main use cases for ActionKit include: 1. **AI agent tool calling**: Expose all actions as function tools to your AI agent over the API or MCP server, with agent-optimized descriptions for tool calling accuracy. 2. **Front-end functions**: For use cases where your users interact with integration data in your app, like displaying a table of Salesforce opportunities or a button to send a Slack notification. 3. **Integrations for your workflow product**: Expose all actions as integration nodes in your workflow automation product/feature by wrapping ActionKit’s input schemas. ActionKit is built for real-life use cases, providing much deeper abstractions that simply wrapping each 3rd-party API. As a result, this comes with benefits including: * A universal filter schema that works across all list/search operations in any 3rd-party application (ie. "contains", "equals", "greater\_than") * A `reload_fields` configuration that can re-pull each of your users’ dynamic fields at query-time, ensuring you have full access to their custom fields in the 3rd-party applications * [Use case-specific schema formats](/actionkit/schema-formats) purpose-built for AI agent use cases and workflow builder implementations # Schema Formats Source: https://docs.useparagon.com/actionkit/schema-formats export function Td({children}) { return {children}; } ActionKit supports multiple formats for accessing Action definitions from the API, for different use cases: * **JSON Schema** `format=json_schema` * For tool-calling agent use cases - in most cases, you can pass Action schemas directly in JSON Schema format to your LLM. * To learn more about JSON Schema, reference the [official specification](https://json-schema.org/draft/2020-12/json-schema-core). Paragon does not implement any of the non-standard fields in `draft-*` versions of JSON Schema at this time. * **Paragon** `format=paragon` * For frontend configuration use cases - for example, if you are adding Actions to your product's workflow builder. * Learn more about the Paragon format below. You can request a specific format in the [List Actions](/actionkit/overview#list-actions) API endpoint with the `format` query parameter. # Paragon Format ## Overview The Paragon format is the same schema used internally to power our Workflow Editor. It is designed to render input fields to allow end users to configure Actions. When using the Paragon format, you will need to support the following types of inputs in Paragon:
Input Type Key(s) Example
Enum input (dropdown) ENUM | DYNAMIC\_ENUM
Enum input with free text support
The user should be able to add their own option, if unavailable in the list
EDITABLE\_ENUM
Enum input with text area
A text input should appear to the right of the dropdown.
EnumTextAreaPairInput
**Text input** TEXT | TEXT\_NO\_VARS
**Textarea input**
Note that by default, lines = 1 (in this case, this input should look identical to a text input).
TEXTAREA | TEXTAREA\_NO\_VARS
**Code input** CODE
**Boolean input** (switch / toggle) BOOLEAN\_INPUT | SWITCH
**Filter / conditional input** CONDITIONAL | DYNAMIC\_CONDITIONAL
## Action polymorphism To best support tool calling, the `json_schema` format automatically breaks down polymorphism in Actions as individual tools. For example, `SALESFORCE_CREATE_RECORD` splits into distinct Actions: * `SALESFORCE_CREATE_OPPORTUNITY` * `SALESFORCE_CREATE_CONTACT` * `SALESFORCE_CREATE_ACCOUNT` * `SALESFORCE_CREATE_LEAD` * `SALESFORCE_CREATE_ANY` * For non-standard objects, whose fields can be discovered with `SALESFORCE_DESCRIBE_ACTION_SCHEMA` In the `paragon` format, polymorphic schemas are not broken into individual Actions and instead will be represented as `dependentInputs` within the API (see below example). When calling [Run Action](/actionkit/overview#run-action), you can reference either the specific Action (e.g. `SALESFORCE_CREATE_OPPORTUNITY`) or the generic Action (e.g. `SALESFORCE_CREATE_RECORD`), as long as the required parameters are supplied. ```json // Example format=paragon Action Schema: { "name": "SALESFORCE_CREATE_RECORD", "title": "Create record", "inputs": [ { "id": "recordType", "title": "Record type", "type": "ENUM", "required": true, "values": [ { "value": "Opportunity", // When recordType = "Opportunity", show inputs: "dependentInputs": [...] }, { "value": "Contact", // When recordType = "Contact", show inputs: "dependentInputs": [...] }, ... ] } ] } ``` # Supported Integrations Source: https://docs.useparagon.com/actionkit/supported-integrations View a list of all the integrations that are currently supported by ActionKit. Available Actions are also listed in the [Reference](/actionkit/integrations) section under each integration name. We are rapidly expanding support for ActionKit across the Integrations Catalog. If you have a request to add a specific integration, please [contact us](mailto:support@useparagon.com). * Adobe Experience Manager * Asana * Azure DevOps * BambooHR * Box * Calendly * ClickUp * Coda * Confluence * DocuSign * Dropbox * Dropbox Sign * Dynamics 365 Business Central * Facebook Ads * Figma * Freshdesk * Front * GitHub * Gmail * Gong * Google Calendar * Google Drive * Google Search Console * Google Sheets * Gusto * HubSpot * Intercom * Jira * Klaviyo * Lever * Linear * LinkedIn * Mailchimp * Marketo * Microsoft Outlook * Microsoft Teams * Monday.com * NetSuite * Notion * OneDrive * Oracle Eloqua * Outreach * PandaDoc * Pardot * Pipedrive * Productboard * QuickBooks * Sage Intacct * Salesforce * SAP S/4HANA * ServiceNow * SharePoint * Shopify * Slack * Stripe * Trello * Xero * Zendesk * Zoom # SDK / API Reference Source: https://docs.useparagon.com/apis/api-reference ## Paragon SDK and API Methods Below are all the public functions exposed on the Paragon SDK global, accessible at `window.paragon`, and/or the Paragon REST API. **For **[on-premise](/on-premise/hosting-paragon-on-premise)**/single-tenant users:** If you are using an on-prem/single-tenant instance of Paragon, you can call the `.configureGlobal` function to point the SDK to use the base hostname of your Paragon instance. ```js import { paragon } from "@useparagon/connect"; // If your login URL is https://dashboard.mycompany.paragon.so: paragon.configureGlobal({ host: "mycompany.paragon.so", }); ``` ### .authenticate(projectId: string, userToken: string) `.authenticate` should be called at the beginning of your application's lifecycle in all cases. This is to make sure that the `userToken` is always as fresh as possible, with respect to your user's existing session on your own site. ```js JavaScript SDK await paragon.authenticate( // You can find your project ID in the Overview tab of any Integration "38b1f170-0c43-4eae-9a04-ab85325d99f7", // See Setup for how to encode your user token "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.ey..." ); ``` Once `.authenticate` has been called, you can access the user's integration state with `.getUser()`. `.authenticate()` only needs to be called when using the Paragon SDK - when making requests to the Paragon REST API, you should instead provide the Paragon User Token in the Authorization header. ### .connect(integrationType: string, installOptions?: InstallOptions) Call `.connect` to launch your Connect Portal for a specific integration provider. You can find the `integrationType` identifier you need in the Overview page for the integration. ```js JavaScript SDK paragon.connect("salesforce"); ``` This function must be called after the Paragon SDK has completed authentication. You can `await` the Promise returned by `#.authenticate-projectid-string-usertoken-string` to show a loading state before users are able to access the Connect Portal. You *must* have an integration configured of this `integrationType` in your Paragon project for the Connect Portal to appear. Otherwise, this function does nothing. * `onSuccess` Callback invoked when an integration is successfully enabled. - `onError` Callback if an unexpected error occurs. - `accountType` For integrations that support multiple account types, you can optionally designate a specific `accountType` to skip the account selection dialog. * `default` * `sandbox` **Example** ```js paragon.connect("salesforce", { // Only allow production-type Salesforce accounts to connect accountType: "default", }); ``` You can also connect multiple accounts for the same integration. ### .disableWorkflow(workflowId: string) -> Promise Call `.disableWorkflow` to turn off a workflow for a user by ID. ```javascript JavaScript SDK paragon.disableWorkflow(""); ``` REST API ```bash REST API DELETE https://api.useparagon.com/projects//sdk/workflows/ Authorization: Bearer ``` ### .enableWorkflow(workflowId: string) -> Promise Call `.enableWorkflow` to turn on a workflow for a user by ID. ```javascript JavaScript SDK paragon.enableWorkflow(""); ``` REST API ```bash REST API POST https://api.useparagon.com/projects//sdk/workflows/ Authorization: Bearer ``` ### .getIntegrationMetadata(integrationType: string?) Call `.getIntegrationMetadata` to get the `name`, `brandColor`, and `icon`, for any of your active integration providers. This is a great way to create your integrations page! ```JS JavaScript SDK paragon.getIntegrationMetadata(); // Response { [ { type: 'salesforce', name: 'Salesforce', brandColor: '#057ACF', icon: 'https://cdn.useparagon.com/2.35.0/dashboard/public/integrations/salesforce.svg' }, { type: 'hubspot', name: 'Hubspot', brandColor: '#F67600', icon: 'https://cdn.useparagon.com/2.35.0/dashboard/public/integrations/hubspot.svg' }, { type: 'slack', name: 'Slack', brandColor: '#4A154B', icon: 'https://cdn.useparagon.com/2.35.0/dashboard/public/integrations/slack.svg' } ] } ``` ```bash REST API GET https://api.useparagon.com/projects//sdk/metadata Authorization: Bearer Content-Type: application/json // Response { [ { type: 'salesforce', name: 'Salesforce', brandColor: '#057ACF', icon: 'https://cdn.useparagon.com/2.35.0/dashboard/public/integrations/salesforce.svg' }, { type: 'hubspot', name: 'Hubspot', brandColor: '#F67600', icon: 'https://cdn.useparagon.com/2.35.0/dashboard/public/integrations/hubspot.svg' }, { type: 'slack', name: 'Slack', brandColor: '#4A154B', icon: 'https://cdn.useparagon.com/2.35.0/dashboard/public/integrations/slack.svg' } ] } ``` ### .getUser() → ParagonUser Call `.getUser` to retrieve the currently authenticated user and their connected integration state. A **ParagonUser** is an object shaped like: ```javascript JavaScript SDK paragon.getUser(); // Response { authenticated: true, userId: "xyz", // The user ID you specified in the signed JWT integrations: { salesforce: { configuredWorkflows: {}, credentialId: "987654-56a7-89b1-cd23-456789abcdef", credentialStatus: "VALID", enabled: true providerData: { instanceURL: "https://mycompany.my.salesforce.com" }, providerId: "1234567890" }, shopify: { configuredWorkflows: {}, enabled: false } } } ``` ```bash REST API GET https://api.useparagon.com/projects//sdk/me Authorization: Bearer Content-Type: application/json // Response { authenticated: true, userId: "xyz", // The user ID you specified in the signed JWT integrations: { salesforce: { configuredWorkflows: {}, credentialId: "987654-56a7-89b1-cd23-456789abcdef", credentialStatus: "VALID", enabled: true providerData: { instanceURL: "https://mycompany.my.salesforce.com" }, providerId: "1234567890" }, shopify: { configuredWorkflows: {}, enabled: false } } } ``` If the user is not authenticated, you'll receive back only `{ authenticated: false }` instead. Please check the `authenticated` property before using the `user.integrations` field. ### .event(name: string, json: JSON) App Events can be sent from your application using the Paragon SDK or REST API. In both cases, you must pass two parameters: * **name** - the event name defined in your App Event * **payload** - the event payload that should match the event schema defined in your App Event See the code examples below for how to send App Events using the Paragon SDK or API. ```javascript JavaScript SDK var eventName = "Contact Created"; var eventPayload = { "name": "Brandon", "email": "b@useparagon.com" }; // Called once during your user's session paragon.authenticate("project-id", ); // Trigger the "Contact Created" App Event paragon.event(eventName, eventPayload); ``` ```bash REST API // Trigger the "Contact Created" App Event POST https://api.useparagon.com/projects//sdk/events/trigger // Headers Authorization: Bearer Content-Type: application/json // Body { "name": "Contact Created", "payload": { "name": "Brandon", "email": "b@useparagon.com" } } ``` When sending live events from your application, Paragon will not validate that your event payload matches the defined event schema. ### .installIntegration(integrationType: string, installOptions?: InstallOptions) -> Promise\ This function should be used only if you are using your own components to show connected integrations and their status, instead of the Connect Portal. Otherwise, you can use [the `.connect` function](/apis/api-reference#connect-integrationtype%3A-string%2C-installoptions%3F%3A-installoptions). The `.installIntegration` can be used to start the connection process for an integration *without* the Connect Portal appearing over your user interface. You can find the `integrationType` identifier you need in the Overview page for the integration. This function resolves with the `IntegrationInstallEvent` in the same format available in `paragon.subscribe`. You can use this to get the newly created credential by awaiting the returned Promise. This function rejects the returned Promise if the integration is already installed for the authenticated user. ```js JavaScript SDK const { credential } = await paragon.installIntegration("googledrive"); ``` **Note**: If the integration specified by `integrationType` requires API keys or post-authentication options, the Connect Portal will still appear to capture those values from your user at that time. The Connect Portal will automatically be dismissed after those values are entered. This function accepts the same optional install options as [#.connect-integration](/apis/api-reference#connect-integrationtype%3A-string%2C-installoptions%3F%3A-installoptions). ### .subscribe(eventName: string, handler: Function) Call `.subscribe` to subscribe to different events and changes from the Paragon SDK. You can find the possible `eventNames` below: | Event Type | Usage in `.subscribe()` | Usage in `.connect()` | | ------------------------- | -------------------------- | --------------------- | | **Integration enabled** | `"onIntegrationInstall"` | `"onInstall"` | | **Integration disabled** | `"onIntegrationUninstall"` | `"onUninstall"` | | **Workflow state change** | `"onWorkflowChange"` | `"onWorkflowChange"` | | **Connect Portal opened** | `"onPortalOpen"` | `"onOpen"` | | **Connect Portal closed** | `"onPortalClose"` | `"onClose"` | Subscribing to SDK Events applies to all integrations *globally*. Specifying callbacks to `.connect()` only applies to a currently open Connect Portal *locally*. See the code examples below for how to subscribe to events using the Paragon SDK. ```typescript Integration Enabled / Disabled type IntegrationInstallEvent = { integrationId: string; integrationType: VisibleConnectAction; credential: Credential; credentialId: string; }; // Using global subscribe paragon.subscribe( "onIntegrationInstall", (event: IntegrationInstallEvent, user: AuthenticatedConnectUser) => { /* ... */ } ); ``` ```typescript Workflow State Changed type WorkflowStateChangeEvent = { integrationId: string; workflowId: string; }; // Using global subscribe paragon.subscribe( "onWorkflowChange", (event: WorkflowStateChangeEvent, user: AuthenticatedConnectUser) => { /* ... */ } ); ``` ```typescript Connect Portal Opened / Closed type PortalOpenEvent = { integrationId: string; integrationType: VisibleConnectAction; }; type PortalCloseEvent = { integrationId: string; integrationType: VisibleConnectAction; }; // Using global subscribe paragon.subscribe( "onPortalOpen", (event: PortalOpenEvent, user: AuthenticatedConnectUser) => { /* ... */ } ); paragon.subscribe( "onPortalClose", (event: PortalCloseEvent, user: AuthenticatedConnectUser) => { /* ... */ } ); ``` Alternatively, you can subscribe `onOpen`, `onClose`, `onUninstall` , and `onWorkflowChange` as a one-time event locally. ```typescript Integration Enabled / Disabled type IntegrationInstallEvent = { integrationId: string; integrationType: VisibleConnectAction; credential: Credential; credentialId: string; }; // Using local call to paragon.connect paragon.connect("", { onInstall: (event: IntegrationInstallEvent, user: AuthenticatedConnectUser) => { /* ... */ } }); ``` ```typescript Workflow State Changed type WorkflowStateChangeEvent = { integrationId: string; workflowId: string; }; // Using local call to paragon.connect paragon.connect("", { onWorkflowChange: (event: WorkflowStateChangeEvent, user: AuthenticatedConnectUser) => {/* ... */} }); ``` ```typescript Connect Portal Opened / Closed type PortalOpenEvent = { integrationId: string; integrationType: VisibleConnectAction; }; type PortalCloseEvent = { integrationId: string; integrationType: VisibleConnectAction; }; // Using local call to paragon.connect paragon.connect("", { onOpen: (event: PortalOpenEvent, user: AuthenticatedConnectUser) => {/* ... */}, onClose: (event: PortalCloseEvent, user: AuthenticatedConnectUser) => {/* ... */} }); ``` ### .request(integrationType: string, path: string, requestOptions: RequestInit ) → Promise Call `.request` to send an API request to a third-party integration on behalf of one of your users. Every integration in your dashboard has a code example of using `paragon.request`, which takes three arguments: * `integrationType`: The short name for the integration. i.e. "salesforce" or "googleCalendar". You can find this string on the Overview tab of the integration you want to access, on your Paragon dashboard. * `path`: The path (without the hostname) of the API request you are trying to access. An example might be: "/v1/charges" for Stripe's charge API or "chat.postMessage" for Slack's Web API. * `requestOptions`: Request options to include, such as: * `body`: An object representing JSON contents of the request. * `method`: An HTTP verb such as "GET" or "POST". Defaults to GET. The function returns a promise for the request output, which will have a shape that varies depending on the integration and API endpoint. ```typescript JavaScript SDK await paragon.request('slack', '/chat.postMessage', { method: 'POST', body: { channel: 'CXXXXXXX0' // Channel ID, text: 'This message was sent with Paragon Connect :exploding_head:' } }); // -> Responds with { ok: true }, and sends a message :) ``` ```bash REST API POST https://proxy.useparagon.com/projects//sdk/proxy/slack/chat.postMessage Authorization: Bearer Content-Type: application/json { "channel": "CXXXXXXX0", "text": "This message was sent with Paragon Connect :exploding_head:" } // -> Responds with { output: { ok: true }}, and sends a message :) ``` ### .setUserMetadata(meta: object) Call `.setUserMetadata()` to associate the authenticated user with metadata from your application. This metadata can be accessed with `.getUser()` or retrieved over the API. ```typescript JavaScript SDK paragon.setUserMetadata({ Name: "Sean V", Email: "sean@useparagon.com", apiKey: "key_Y0kBVldPFInxK" }); ``` **Request** ```bash REST API PATCH https://api.useparagon.com/projects//sdk/me // Headers Authorization: Content-Type: application/json // Body { "meta": { "Email": "sean@useparagon.com", "apiKey": "key_Y0kBVldPFInxK" } } ``` ### .uninstallIntegration(integrationType: string) -> Promise Call `.uninstallIntegration()` to disconnect an integration for the authenticated user. When an integration is disconnected, workflows for that integration will stop running for the authenticated user and any saved User Settings will be cleared. ```typescript JavaScript SDK // Use the integration name, as used in paragon.connect(); await paragon.uninstallIntegration("salesforce"); ``` Get the ID of the integration you want to disconnect, with the `/sdk/integrations` endpoint: **Request** ```bash REST API GET https://api.useparagon.com/projects//sdk/integrations // Headers Authorization: Bearer // Response [ { "id": "", "type": "salesforce", ... }, {...} ] // The can be used to disconnect the integration for the user: DELETE https://api.useparagon.com/projects//sdk/integrations/ // Headers Authorization: Bearer ``` ### .workflow(workflowId: string, options: FetchOptions) Call `.workflow()` to trigger a Paragon workflow that sends a custom response back to your app. Note: The workflow must be enabled and use a Request-type trigger. ```javascript Javascript SDK // Called once during your user's session paragon.authenticate("project-id", ) // Trigger the "Lead Created" workflow await paragon.workflow("", { "body": { "email": "bowie@useparagon.com", "first_name": "Bowie", "last_name": "Foo" } }); ``` ```bash REST API // Trigger the "Lead Created" Workflow POST https://api.useparagon.com/projects//sdk/triggers/ Authorization: Bearer Content-Type: application/json { "email": "bowie@useparagon.com", "first_name": "Bowie", "last_name": "Foo } ``` ### Get project's integrations Returns a list of the integrations enabled for the Paragon project by the ID in the URL. * Includes the Connect Portal configuration for each integration (as `.configs`) and the Workflows associated with each integration (as `.workflows`) * The **providerId** is the authenticated user's ID assigned by their integration provider (e.g. for a Salesforce integration, this would be the user's Salesforce user ID) This method is currently available via REST API only. ```bash REST API GET https://api.useparagon.com/projects//sdk/integrations Authorization: Bearer Content-Type: application/json // Example response (may include more than is in this list): [{ "id": "2f08e65f-d924-42ab-9618-b6023d82ffbd", "dateCreated": "2021-03-02T00:22:33.166Z", "dateUpdated": "2021-03-02T00:22:33.166Z", "projectId": "908f4c5e-6394-46a5-9355-3f729edbd160", "customIntegrationId": null, "type": "slack", "isActive": true, "configs": [ { "id": "3ebcc179-a1a6-447f-8dc9-5017f40f08ef", "dateCreated": "2021-03-02T00:22:33.166Z", "dateUpdated": "2023-05-15T21:01:00.260Z", "integrationId": "2f08e65f-d924-42ab-9618-b6023d82ffbd", "values": { "overview": "####Our Slack integration enables you to:\n \n\n• Receive alerts and notifications in your Slack workspace\n• Notify or DM specific team members based on certain activity", "sharedMeta": {}, "accentColor": "#4A154B", "description": "Send notifications to Slack", "workflowMeta": {} } }, ], "workflows" [ { "id": "1b22193b-e355-458d-b6a3-5e5516edb588", "dateCreated": "2021-06-02T23:17:05.714Z", "dateUpdated": "2021-07-13T20:55:41.895Z", "description": "Send Updates to Slack", "projectId": "908f4c5e-6394-46a5-9355-3f729edbd160", "teamId": "2116f794-07c7-4dfe-a302-e816a2f7ed72", "isOnboardingWorkflow": false, "integrationId": "2f08e65f-d924-42ab-9618-b6023d82ffbd", "steps": [] }, ], "customIntegration": null, "hasCredential": true, "connectedUserLimitOnDevCred": 0, "connectedUserLimitReached": true, "name": "Slack", "brandColor": "#4A154B", "needPreOauthInputs": false, "providerType": "slack", "authenticationType": "oauth" }] ``` ### Get user's Connect credentials Returns a list of the user's Connect credentials (i.e., the accounts connected and authorized by the end user). This method is currently available via REST API only. ```bash REST API GET https://api.useparagon.com/projects//sdk/credentials Authorization: Bearer Content-Type: application/json // Example response (may include more than is in this list): [{ "id": "00da4146-7ac4-4253-a8f7-96849b8137d9", "dateCreated": "2021-03-24T12:19:21.511Z", "dateUpdated": "2021-03-24T12:19:28.512Z", "dateDeleted": null, "projectId": "db06d291-ba2c-41c5-9a12-9362abfd6228", "integrationId": "95bedc9f-6a22-4855-b08d-e68dc073ad91", "personaId": "0563109f-5e71-46c5-8483-1ac8c0913d6c", "config": { "configuredWorkflows": { "3eb95154-3c7b-413c-bf14-ba367d95b53f": { "enabled": true, "settings": { "example-input-id": "example value" } } } }, "isPreviewCredential": false, "providerId": "50150244515" }] ``` ### Update user's Connect credential Updates the user's connected integration account, including any settings and configured workflows. This endpoint updates by replacement with respect to the `config` property, so this endpoint should only be used after retrieving the existing value (which can be done by using the above endpoint: [Get user's Connect credentials](/apis/api-reference#get-user’s-connect-credentials)). This method is currently available via REST API only. ```bash REST API PATCH https://api.useparagon.com/projects//sdk/credentials/ Authorization: Bearer Content-Type: application/json // Body: Example showing being enabled { "config": { "configuredWorkflows": { ... "": { "enabled": true, "settings": {} } }, "sharedSettings": {...} } } ``` **Note**: In the above example, the existing value for `config` must be provided in full, with the intended changes applied. This is because `config` will be updated by replacement. ## ExternalFilePicker You can use the Paragon SDK to allow your user to select files from a File Storage integration in your app. The SDK provides an `ExternalFilePicker` class to load any necessary JavaScript dependencies into your page and authenticate with your user's connected account. #### Supported integrations for ExternalFilePicker * [Google Drive](/resources/integrations/google-drive#using-the-google-drive-file-picker) * [OneDrive](/resources/integrations/onedrive#using-the-onedrive-file-picker) * [SharePoint](/resources/integrations/sharepoint#using-the-sharepoint-file-picker) ### new paragon.ExternalFilePicker(integrationType, options) Construct a new instance of an ExternalFilePicker for an integration given by `integrationType`. Any required JS dependencies do not start loading until [`.init`](/apis/api-reference#picker-init-initconfig) is called. **Example:** ```javascript const picker = new paragon.ExternalFilePicker("googledrive", { allowedTypes: ["application/pdf"], allowMultiSelect: false, onFileSelect(files) { console.log("User picked files", files); } }); ``` #### Options * `allowedTypes` (default: `undefined`) * An array of MIME types to allow for file selection, e.g. `["application/pdf", "image/jpeg"]` * If `undefined`, all types will be allowed. * `allowMultiSelect` (default: `false`) * If `true`, allow multiple files to be selected. * `allowFolderSelect` (default: `false`) * If `true`, allow folders to be selected. * `onOpen()` * Called when a Picker successfully appears in the app. * `onClose()` * Called when a Picker gets closed. * `onFileSelect(files)` * Called when a Picker file selection is made. * `files` is an Array of objects with the selected file objects from the 3rd-party picker script. * `onCancel()` * Called when a Picker gets closed without any files selected. ### picker.init(initConfig) Initialize a file picker with required configuration `initConfig`. Required configuration varies per integration; see [integration-specific documentation](/apis/api-reference#supported-integrations-for-externalfilepicker) for specific details. This function loads required JS dependencies into the page, if they have not already been loaded. Other methods, like `.open` and `.getInstance`, cannot be called until the Promise returned by `.init` is resolved. **Example:** ```js await picker.init({ // Google Developer Key developerKey: "AIzaS..." }); ``` ### picker.open() Presents the file picker in your app. Selected files or other events will be received in the [callbacks](/apis/api-reference#options) you specified in the constructor. **Example:** ```js picker.open(); ``` ### picker.getInstance() Returns a reference to the third-party JS library object that this file picker is using. This object can be used for additional integration-specific customization. # Multi Account Authorization Source: https://docs.useparagon.com/apis/api-reference/multi-account-authorization Use the SDK to connect multiple accounts for the same integration. Multiple Account Authorizations is a set of SDK options that enables you to connect multiple accounts of the same integration type for a Connected User. For example, one Connected User can connect a Google Calendar integration for both their Google Workspace account and personal Google account. ## Getting Started **Connecting new accounts** To get started with Multiple Account Authorizations, you can pass in `allowMultipleCredentials` to `paragon.installIntegration`: ```javascript // Connect a new Google Calendar account paragon.installIntegration("googleCalendar", { allowMultipleCredentials: true, // Set to true to show User Settings after installation: showPortalAfterInstall: true }); ``` This function starts the connection process for a new account of an integration. After the user has connected, you can optionally show the Connect Portal for presenting any User Settings that are used to configure the integration. **Listing accounts** Your UI must be able to render a list of each account your user has connected for an integration. Use `paragon.getUser` to retrieve this list: ```javascript const user = paragon.getUser(); // An array of all Google Calendar accounts the user has connected: user.integrations.googleCalendar.allCredentials; ``` Each account ("credential") will have an ID that can be used to present the Connect Portal for the account, remove the account, or route requests to the account. Use `paragon.subscribe` to listen for change events to the Paragon user object, if your UI updates dynamically. **Managing existing accounts** You can allow your users to manage User Settings for a specific account using the Connect Portal by passing `selectedCredentialId` to `paragon.connect`: ```javascript // Modify User Settings for an existing Google Calendar account paragon.connect("googleCalendar", { selectedCredentialId: "a5e995c2-7709-43fd-9cdf-f759faa52497" }); ``` **Removing existing accounts** You can disconnect an existing account by passing `selectedCredentialId` to `paragon.uninstallIntegration`: ```javascript // Disconnect an existing Google Calendar account paragon.uninstallIntegration("googleCalendar", { selectedCredentialId: "a5e995c2-7709-43fd-9cdf-f759faa52497" }); ``` ## Usage A subset of SDK functions can be passed an additional parameter for Multiple Account Authorizations, as outlined below. In general, to use Multiple Account Authorizations, you will need to: * Use `user.integrations.[integration].allCredentials` (a field returned in [`getUser`](/apis/api-reference/multi-account-authorization#getuser->-paragonuser)) to display multiple connected accounts in your Integrations UI. * Update references to [`connect`](/apis/api-reference#connect-integrationtype%3A-string%2C-installoptions%3F%3A-installoptions) (or [`installIntegration`](/apis/api-reference/multi-account-authorization#installintegration-integrationtype%3A-string%2C-options%3F%3A-integrationinstalloptions->-promise) and [`uninstallIntegration`](/apis/api-reference/multi-account-authorization#.uninstallintegration-integrationtype%3A-string%2C-options%3F%3A-integrationuninstalloptions->-promise)) to use the SDK with Multiple Account Authorizations enabled. * Update references to [`paragon.request`](/apis/api-reference/multi-account-authorization#request-integrationtype%3A-string%2C-path%3A-string%2C-requestoptions%3A-requestoptions-→-promise) and [`paragon.workflow`](/apis/api-reference/multi-account-authorization#workflow-workflowid%3A-string%2C-options%3A-fetchoptions) (and API equivalents) to make sure that a specific account is targeted for a given integration type. App Events and Workflows do not need to be updated to support Multiple Account Authorizations. ## Reference ### .getUser() -> ParagonUser Call `.getUser` to retrieve the currently authenticated user and their connected integration state. With Multiple Account Authorizations, the `getUser()` method additionally returns `allCredentials`, an array of connected accounts for a given integration. ```javascript JavaScript SDK paragon.getUser(); { authenticated: true, userId: "xyz", // The user ID you specified in the signed JWT integrations: { salesforce: { enabled: true, allCredentials: [ { id: "a5e995c2-7709-43fd-9cdf-f759faa52497", dateCreated: "2023-05-30T22:33:20.349Z", dateUpdated: "2023-05-30T22:33:20.349Z", projectId: "d1f142cd-1dfe-4d76-ab4c-8f64901a9c5c", integrationId: "8aaad9ff-5adb-433c-a17b-da093f9d4528", personaId: "30975f6a-c50c-4e74-914a-3eb700db8b05", config: { configuredWorkflows: { ... } }, isPreviewCredential: false, providerId: "1223115691", providerData: {}, status: "VALID", dateRefreshed: "2023-05-30T22:33:20.349Z", dateValidUntil: "2023-05-30T23:33:17.809Z", refreshFailureCount: 0, isRefreshing: false, }, ], configuredWorkflows: {}, credentialId: "a5e995c2-7709-43fd-9cdf-f759faa52497", credentialStatus: "VALID", providerId: "1223115691", providerData: {}, }, shopify: { enabled: false, }, }, }; ``` ```bash REST API GET https://api.useparagon.com/projects//sdk/me Authorization: Bearer Content-Type: application/json { authenticated: true, userId: "xyz", // The user ID you specified in the signed JWT integrations: { salesforce: { enabled: true, allCredentials: [ { id: "a5e995c2-7709-43fd-9cdf-f759faa52497", dateCreated: "2023-05-30T22:33:20.349Z", dateUpdated: "2023-05-30T22:33:20.349Z", projectId: "d1f142cd-1dfe-4d76-ab4c-8f64901a9c5c", integrationId: "8aaad9ff-5adb-433c-a17b-da093f9d4528", personaId: "30975f6a-c50c-4e74-914a-3eb700db8b05", config: { configuredWorkflows: {} }, isPreviewCredential: false, providerId: "1223115691", providerData: {}, status: "VALID", dateRefreshed: "2023-05-30T22:33:20.349Z", dateValidUntil: "2023-05-30T23:33:17.809Z", refreshFailureCount: 0, isRefreshing: false, } ], configuredWorkflows: {}, credentialId: "a5e995c2-7709-43fd-9cdf-f759faa52497", credentialStatus: "VALID", providerId: "1223115691", providerData: {}, }, shopify: { enabled: false, } } } ``` ### .installIntegration(integrationType: string, options?: IntegrationInstallOptions) -> Promise * **Full docs**: [.installIntegration(integrationType: string, installOptions?: InstallOptions) -> Promise\](/apis/api-reference#installintegration-integrationtype%3A-string%2C-installoptions%3F%3A-installoptions->-promise\) * **Additional options**: If `allowMultipleCredentials` is specified as `true` in the `options` object, this function will not throw an error if the user already has this integration installed. You can use the resulting Promise to get the newly created credential. ```js JavaScript SDK const { credential } = await paragon.installIntegration("googledrive", { allowMultipleCredentials: true }); ``` **Replacing an account** You can replace one of your user's existing connected accounts with the `selectedCredentialId` property. This option replaces the underlying connected account, keeping their enabled workflows and settings intact. ```js JavaScript SDK paragon.installIntegration("googledrive", { allowMultipleCredentials: true, selectedCredentialId: "0d2cca60-268b-45f1-ac5e-af6aad403d8c" }); ``` ### .uninstallIntegration(integrationType: string, options?: IntegrationUninstallOptions) -> Promise Call `.uninstallIntegration()` to disconnect an integration for the authenticated user. * **Full docs**: [.uninstallIntegration(integrationType: string) -> Promise](/apis/api-reference#uninstallintegration-integrationtype%3A-string->-promise) * **Additional options:** `selectedCredentialId` (SDK) or `X-Paragon-Credential` (API) can be used to select a specific account to uninstall. ```javascript JavaScript SDK paragon.uninstallIntegration("googledrive", { selectedCredentialId: "de06dea8-8680-483c-95ea-cfcf66582c96" }); ``` ```bash REST API DELETE https://api.useparagon.com/projects//sdk/integrations/ Authorization: Bearer X-Paragon-Credential: de06dea8-8680-483c-95ea-cfcf66582c96 ``` ### .connect(integrationType: string, options: IntegrationInstallOptions) -> Promise With Multiple Account Authorizations, use `.connect` to present the Connect Portal for an *existing* account for the intended integration. [`.installIntegration`](/apis/api-reference/multi-account-authorization#installintegration-integrationtype%3A-string%2C-options%3F%3A-integrationinstalloptions->-promise) is used to connect *new* accounts. * The Connect Portal can show the settings and workflows enabled for one account at a time, set by the `selectedCredentialId` property. If `selectedCredentialId` is not defined, the Connect Portal will use the first account available. * When the Connect Portal appears, a user can enable or disable workflows, update User Settings, and disconnect the account that is selected. ```js JavaScript SDK // Connect a new account for this integration. // NOTE: You must use `.installIntegration` rather than `.connect`. paragon.installIntegration("salesforce", { allowMultipleCredentials: true }) // Show the Connect Portal to configure an existing account for this integration. paragon.connect("salesforce", { selectedCredentialId: "de06dea8-8680-483c-95ea-cfcf66582c96" }); ``` ### .request(integrationType: string, path: string, requestOptions: RequestOptions) → Promise Call `.request` to send an API request to a third-party integration on behalf of one of your users. * **Full docs**: [#.request-integrationtype-string-path-string-requestoptions-requestinit-promise](/apis/api-reference#request-integrationtype%3A-string%2C-path%3A-string%2C-requestoptions%3A-requestinit-→-promise) * **Additional options:** `selectedCredentialId` (SDK) or `X-Paragon-Credential` (API) can be used to select a specific account to use with the [Proxy API](/apis/proxy). ```js JavaScript SDK await paragon.request('slack', '/chat.postMessage', { method: 'POST', body: { channel: 'CXXXXXXX0' // Channel ID, text: 'This message was sent with Paragon Connect :exploding_head:' }, selectedCredentialId: "de06dea8-8680-483c-95ea-cfcf66582c96" }); ``` ```bash REST API POST https://proxy.useparagon.com/projects//sdk/proxy/slack/chat.postMessage Authorization: Bearer Content-Type: application/json X-Paragon-Credential: de06dea8-8680-483c-95ea-cfcf66582c96 { "channel": "CXXXXXXX0", "text": "This message was sent with Paragon Connect :exploding_head:" } ``` ### .workflow(workflowId: string, options: FetchOptions) Call `.workflow()` to trigger a Paragon workflow that sends a custom response back to your app. Note: The workflow must be enabled and use a Request-type trigger. * **Full docs**: [.workflow(workflowId: string, options: FetchOptions)](/apis/api-reference##workflow-workflowid%3A-string%2C-options%3A-fetchoptions) * **Additional options:** `selectedCredentialId` (SDK) or `X-Paragon-Credential` (API) can be used to select a specific account to trigger a workflow for. The Credential ID that is used will be recorded for viewing in [Task History](/monitoring/viewing-task-history). ```javascript JavaScript SDK // Trigger the "Lead Created" workflow await paragon.workflow("", { body: { "email": "bowie@useparagon.com", "first_name": "Bowie", "last_name": "Foo" }, selectedCredentialId: "de06dea8-8680-483c-95ea-cfcf66582c96" }); ``` ```bash REST API // Trigger the "Lead Created" Workflow POST https://api.useparagon.com/projects//sdk/triggers/ Authorization: Bearer Content-Type: application/json X-Paragon-Credential: de06dea8-8680-483c-95ea-cfcf66582c96 { "email": "bowie@useparagon.com", "first_name": "Bowie", "last_name": "Foo } ``` # Proxy API Source: https://docs.useparagon.com/apis/proxy Send requests directly to an integration provider, on behalf of Connected Users. Proxy API was formerly known as the Connect API. ## Introduction Once your users have connected their third-party app accounts in the Connect Portal, you can access their app account via the Proxy API. The Proxy API allows you to directly access any of the third-party provider's API methods. With the SDK, you can use [`paragon.request`](/apis/api-reference#.request-integrationtype-string-path-string-requestoptions-requestinit-promise-less-than-unknown-gre) to send an API request to a third-party app on behalf of one of your Connected Users. Along with [Workflows](/workflows/building-workflows), the Proxy API is one of two primary ways to build integrations with Paragon. ## When to use the Proxy API The Proxy API is the most flexible way to interact with your users' third-party apps, and is a useful code-based approach for situations including: * Performing a simple one-off request (e.g. fetching a list of Salesforce contacts) * Accessing API methods that may not be available in Workflow [Integration Actions](/workflows/integration-actions) * Writing custom code for complex or unique integration use cases * Migrating existing integration code to Paragon ## Making requests with the Proxy API Every integration in your dashboard has a code example of using `paragon.request`, which takes three arguments: * `integrationType`: The short name for the integration. i.e. "salesforce" or "googleCalendar". You can find this string on the Overview tab of the integration you want to access, on your Paragon dashboard. * When using a custom integration, the `integrationType` name is prefixed with `"custom."` For example, a custom integration titled "TaskLab" would be called `"custom.tasklab"`. * `path`: The path (without the hostname) of the API request you are trying to access. An example might be "/v1/charges" for Stripe's charge API or "chat.postMessage" for Slack's Web API. * `requestOptions`: Request options to include, such as: * `body`: An object representing JSON contents of the request. * `method`: An HTTP verb such as "GET" or "POST". Defaults to GET. The function returns a Promise for the request output, which will have a shape that varies depending on the integration and API endpoint. ### Client-side SDK Usage ```js JavaScript SDK await paragon.request('slack', '/chat.postMessage', { method: 'POST', body: { channel: 'CXXXXXXX0' // Channel ID, text: 'This message was sent with Paragon Connect :exploding_head:' } }); // -> Responds with { ok: true }, and sends a Slack message :) ``` ### Server-side Usage **Base URL:** * Cloud: `https://proxy.useparagon.com` * [On-premise environments](/on-premise/hosting-paragon-on-premise): `https://worker-proxy.`\[your on-prem host name] If you'd like to issue a request from your server to an integration on behalf of an end-user, you can make a request to one of the following paths: * `/projects//sdk/proxy//` * or `/projects//sdk/proxy/custom//` for [Custom Integrations](/resources/custom-integrations). ```bash https://proxy.useparagon.com/projects//sdk/proxy // Authorization: Bearer ``` * A Bearer token must also be specified with a Paragon User Token. * This endpoint accepts any HTTP verb you want to use with the API. * Body contents must be specified as `application/json`. **Example**: ```bash POST https://proxy.useparagon.com/projects/19d...012/sdk/proxy/slack/chat.postMessage Authorization: Bearer eyJ... Content-Type: application/json { "channel": "CXXXXXXX0", "text": "This message was sent with Paragon Connect :exploding_head:" } ``` When sending Proxy API requests for Custom Integrations, the request path differs slightly. Use the `/custom/` path to send requests as shown: ```bash https://proxy.useparagon.com/projects//sdk/proxy /custom// Authorization: Bearer ``` * A Bearer token must also be specified with a Paragon User Token. * This endpoint accepts any HTTP verb you want to use with the API. * The Integration ID can be found in the dashboard (`/.../integrations/`) or with the [Get project's integrations](/apis/api-reference#get-projects-integrations) API endpoint. **Example:** ```bash POST https://proxy.useparagon.com/projects/19d...012/sdk/proxy /fb243b75-35e7-46b3-ba6c-967ccebeb449/notifications Authorization: Bearer eyJ... Content-Type: application/json { "title": "This notification was created from your app" } ``` ## Requesting files or binary response data By default, the Proxy API will attempt to parse the response data from the integration API as JSON. To receive the raw response data (including all HTTP headers that were received from the integration API), you can pass the `X-Paragon-Use-Raw-Response` header to the request. This can be used when downloading binary/file data, such as images or PDF files, where the response cannot be encoded as JSON. *The JavaScript SDK currently does not support returning non-JSON payloads. As an alternative, you can use your preferred request client to make the below API request.* Below is an example of using the Proxy API to download a file from Google Drive using their [`files.get`](https://developers.google.com/drive/api/v3/reference/files/get) endpoint. ```curl REST API GET https://proxy.useparagon.com/projects/19d...012/sdk/proxy/googledrive/files//?alt=media Authorization: Bearer eyJ... X-Paragon-Use-Raw-Response: 1 ``` ## Changing the Base URL In some cases, the Base URL included automatically in the Proxy API isn't the one you want to send requests to. To change the Base URL of a Proxy request, simply use a fully-qualified URL rather than a relative path: ```bash https://proxy.useparagon.com/projects/[Project ID]/sdk/proxy/googledrive/https://sheets.googleapis.com/v4/spreadsheets ``` In this example, the URL that will be requested is **`https://sheets.googleapis.com/v4/spreadsheets`**. **Note**: Integrations have a permitted list of hosts that can be reached with the Proxy API. If you get the error "This domain is invalid for the current integration", you may be using an unpermitted host. # Task History API Source: https://docs.useparagon.com/apis/task-history ## Introduction The Task History API allows you to query your users' usage of integration workflows and access data from historical workflow executions. **Task History API is available for Paragon customers on Enterprise plans.** To learn more, contact your Customer Success Manager or [sales@useparagon.com](mailto:sales@useparagon.com). ### When to use the Task History API The Task History API can be used to analyze integration usage or pull information about historical workflow executions into your application. For example, you can use the Task History API to: * Query the number of workflow executions that ran last week for the Salesforce integration * Query all failed workflow executions for a specific user * Export all tasks that occurred in a specific month into Google BigQuery You can find example queries in the request format below. ### Generating API Keys The Task History API authorizes with a project-level API Key, instead of the Paragon User Token. API Keys provide access to *all Connected Users* in the project they are created in and can be rotated or deleted after being generated. To generate a new project-level API Key: 1. Visit your Project's Settings > API Keys. 2. Click "**Create API Key**". Provide a meaningful name for the API Key for your reference. 3. The API Key will appear on a one-time basis for you to save in a secure place. ## Examples ### Querying Salesforce workflow executions run during a week's time period ```bash REST API GET /projects//task-history/workflow-executions?integration=salesforce&afterDate=2023-02-16T00:00:00&beforeDate=2023-02-23T00:00:00 Authorization: Bearer ``` **Response example:** ```json { "workflowExecutions": [ { "id": "c70cafa5-4f80-45c7-b5b3-71454f6d638d", "userId": "d1f142cd-1dfe-4d76-ab4c-8f64901a9c5c", "taskCount": 1, "runDuration": 1477, "workflowId": "c395c170-4541-499c-afd1-0eccfaae49c9", "status": "SUCCEEDED", "dateEnded": "2023-02-20T06:21:43.751Z", "dateStarted": "2023-02-20T06:21:42.274Z" }, ... ], "nextLink": "https://zeus.useparagon.com/projects/d1f142cd-1dfe-4d76-ab4c-8f64901a9c5c/task-history/workflow-executions?integration=salesforce&afterDate=2023-02-16T00:00:00&beforeDate=2023-02-23T00:00:00&sortBy=ASC&offset=100", "total": 14295 } ``` ### Querying failed workflow executions for a user ```bash REST API GET /projects//task-history/workflow-executions?userId=test@example.com&status=FAILED Authorization: Bearer ``` **Response example:** ```json { "workflowExecutions": [ { "id": "317a396c-7dc8-4a1f-8ceb-b39d5ad845da", "userId": "123456", "taskCount": 0, "runDuration": 3847, "workflowId": "24cf377b-c7f5-40e7-9b10-6cc5d811266a", "status": "FAILED", "dateEnded": "2023-03-01T11:15:04.051Z", "dateStarted": "2023-03-01T11:15:00.204Z" }, ... ], "nextLink": "https://zeus.useparagon.com/projects/d1f142cd-1dfe-4d76-ab4c-8f64901a9c5c/task-history/workflow-executions?userId=test@example.com&status=FAILED&sortBy=ASC&offset=100", "total": 180 } ``` ## Endpoint Reference ### Base URL The Base URL of the Task History API endpoints begin with the same origin as the [Proxy](/apis/proxy) and [Users APIs](/apis/users). * For cloud customers who sign in to `dashboard.useparagon.com`, the Base URL is `https\://api.useparagon.com/projects/\/task-history` * For on-premise customers who sign in to `dashboard.`, the base URL is `https\://zeus.\/projects/\/task-history` ### Authorization Requests to the Task History API must provide an API Key as a Bearer-type `Authorization` header in the request: ```bash GET /projects//task-history/workflow-executions Authorization: Bearer ``` ### Pagination API responses that include multiple objects will be provided in page size of 100. In the case that there are additional pages of data available, the API response will include a URL to get the next 100 records. ### Rate Limits The Task History API has a rate limit of 1,000 requests per 10 minutes. If you need higher rate limits, please reach out to our team at [support@useparagon.com](mailto:support@useparagon.com) ### API Methods ## Get workflow executions `GET` `[Base URL]/workflow-executions` Search through historical workflow executions with the below filtering options as query parameters. #### Query Parameters | Name | Type | Description | | ----------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | userId | String | Filter executions by a specific Connected User ID. | | workflowId | UUID | Filter executions for a specific workflow ID. | | integration | String | Filter executions for a specific integration, for example, `salesforce`. The integration name is in the same format as provided to [`paragon.connect`](/apis/api-reference#.connect-integrationtype-string). | | status | String | Filter executions by a status:
`EXECUTING` / `FAILED` / `SUCCEEDED` / `DELAYED` | | beforeDate | String (Date) | Filter executions that began before a certain timestamp, in [ISO 8601 format](https://en.wikipedia.org/wiki/ISO_8601) (for example, `2023-02-22`). | | afterDate | String (Date) | Filter executions that began after a certain timestamp, in ISO 8601 format. | | offset | Number | Offset results by a fixed number of records. | | sortBy | String | Sort by execution time: `ASC` / `DESC`. Defaults to `DESC`. | ```json 200: OK { "workflowExecutions": [ { "id": "c70cafa5-4f80-45c7-b5b3-71454f6d638d", "userId": "d1f142cd-1dfe-4d76-ab4c-8f64901a9c5c", "taskCount": 1, "runDuration": 1477, "workflowId": "c395c170-4541-499c-afd1-0eccfaae49c9", "status": "SUCCEEDED", "dateEnded": "2023-02-20T06:21:43.751Z", "dateStarted": "2023-02-20T06:21:42.274Z" }, // ... ], // nextLink is `null` if there are no more results "nextLink": "https://zeus.useparagon.com/projects/d1f142cd-1dfe-4d76-ab4c-8f64901a9c5c/task-history/workflow-executions?integration=salesforce&afterDate=2023-02-16T00:00:00&beforeDate=2023-02-23T00:00:00&sortBy=ASC&offset=100", "total": 14295 } ``` ## Get workflow execution by ID `GET` `[Base URL]/workflow-executions/:executionID` Get details for a specific workflow execution by its Execution ID. #### Path Parameters | Name | Type | Description | | ------------- | ---- | ------------------------------------------- | | executionID\* | UUID | The ID of the execution to get details for. | ```json 200: OK { "id": "daff08e3-c299-4005-9799-be69090ebae1", "userId": "test", "taskCount": 1, "runDuration": 8, "workflowId": "88d20d69-e585-4eea-aac4-5b7aea0521e8", "status": "FAILED", "dateEnded": "2022-11-25T22:15:07.987Z", "dateStarted": "2022-11-25T22:15:00.038Z", "stepExecutions": [ { "id": "5fec7d78-7e10-4b4a-bdfc-292f629774bf", "stepId": "0f7cce44-d292-4555-bae8-5b904a0c4ac9", "workflowExecutionId": "daff08e3-c299-4005-9799-be69090ebae1", "status": "SUCCEEDED", "type": "TRIGGER/CRON", "start": "2022-11-25T22:15:00.075Z", "end": "2022-11-25T22:15:00.084Z", "next": [ "29e675eb-0910-4d5c-8a5c-a4a4c1895605" ], "prev": null, "inputSize": "220", "outputSize": "76" }, { "id": "29e675eb-0910-4d5c-8a5c-a4a4c1895605", "stepId": "7459bbf5-e55b-49e8-9390-084cf86752e5", "workflowExecutionId": "daff08e3-c299-4005-9799-be69090ebae1", "status": "FAILED", "type": "ACTION/REQUEST", "start": "2022-11-25T22:15:07.850Z", "end": "2022-11-25T22:15:07.873Z", "next": [], "prev": "5fec7d78-7e10-4b4a-bdfc-292f629774bf", "inputSize": "712", "outputSize": "824" } ] } ``` ## Get details for step of workflow execution `GET` `[Base URL]/workflow-executions/:executionID/step-executions/:stepExecutionID` Get details for a specific step of a workflow execution, by its Execution ID *and* Step Execution ID. These details include step input/output and run duration for the specific step. #### Path Parameters | Name | Type | Description | | ----------------- | ---- | ------------------------------------------------ | | executionID\* | UUID | The ID of the execution to get details for. | | stepExecutionID\* | UUID | The ID of the step execution to get details for. | ```json 200: OK { "isLargeInput": false, "isLargeOutput": false, "input": {}, "output": "Error: no auth mechanism defined" } ``` `POST` `[Base URL]/workflow-executions/:executionID/replay` Replay a specific workflow execution, using the same version of the workflow that the execution originally ran with. *This endpoint is in beta and may not be suitable for use in your production application. Please send any feedback you have about this endpoint to *[*support@useparagon.com*](mailto:support@useparagon.com)*!* ```json 201: Created undefined ``` ### Get workflow executions `GET` `[Base URL]/workflow-executions` ### Get workflow execution by ID `GET` `[Base URL]/workflow-executions/:executionID` #### Query Parameters | Name | Type | Description | | ----------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | userId | String | Filter executions by a specific Connected User ID. | | workflowId | UUID | Filter executions for a specific workflow ID. | | integration | String | Filter executions for a specific integration, for example, `salesforce`. The integration name is in the same format as provided to [`paragon.connect`](/apis/api-reference#.connect-integrationtype-string). | | status | String | Filter executions by a status:
`EXECUTING` / `FAILED` / `SUCCEEDED` / `DELAYED` | | beforeDate | String (Date) | Filter executions that began before a certain timestamp, in [ISO 8601 format](https://en.wikipedia.org/wiki/ISO_8601) (for example, `2023-02-22`). | | afterDate | String (Date) | Filter executions that began after a certain timestamp, in ISO 8601 format. | | offset | Number | Offset results by a fixed number of records. | | sortBy | String | Sort by execution time: `ASC` / `DESC`. Defaults to `DESC`. | ### Get details for step of workflow execution `GET` `[Base URL]/workflow-executions/:executionID/step-executions/:stepExecutionID` ### Replay workflow execution `POST` `[Base URL]/workflow-executions/:executionID/replay` Replay a specific workflow execution, using the same version of the workflow that the execution originally ran with. *This endpoint is in beta and may not be suitable for use in your production application. Please send any feedback you have about this endpoint to *[*support@useparagon.com*](mailto:support@useparagon.com)*!* #### Path Parameters | Name | Type | Description | | ------------- | ---- | ------------------------------------------- | | executionID\* | UUID | The ID of the execution to get details for. | # Users API Source: https://docs.useparagon.com/apis/users ## Introduction The Users API allows you to query and modify the state of your Connected Users and their integrations. The API includes REST endpoints (and matching SDK functions) for identifying what integrations your user has enabled, disconnecting integrations, and disabling workflows. The API also allows your application to associate metadata with a Connected User. ✨ User Metadata is included in the **Pro Plan** and above. [Contact us](mailto:sales@useparagon.com) to schedule a demo of User Metadata or upgrade your account. ### When to use the Users API The Users API can be used for integration usage analysis or maintenance of Connected Users. For example, using the API methods, you can... * Automatically disconnect integrations when a user deletes or downgrades their account in your application * Enrich your Connected Users' profile information with email, name, and other metadata * Check if a user has enabled a certain integration and view account connection status ## Authorization Requests to the Users API are authorized with a Bearer-type `Authorization` header using a Paragon User Token: ```bash https://api.useparagon.com/projects//sdk/... Authorization: Bearer ``` In the SDK, the Users API can be called directly after calling `paragon.authenticate`: ```js // Authenticate the user await paragon.authenticate("", ""); // Call a Users API method, like setUserMetadata paragon.setUserMetadata({ ... }); ``` ## Examples ### Associate Connected User with metadata You can associate your user with metadata by including it in your existing SDK call to `paragon.authenticate`, as an additional parameter: ```js await paragon.authenticate("", "", { metadata: { Name: user.fullName, Email: user.email, AccountType: user.plan, } }); ``` **Note:** `Name` and `Email` are special parameters that you can view within the [Connected Users Dashboard](/monitoring/users). They are also case-sensitive. Alternatively, you can supply the metadata from your application after authenticating: ```js JavaScript SDK paragon.setUserMetadata({ Name: "Sean V", Email: "sean@useparagon.com", AccountType: "Pro", }); ``` ```bash REST API // REQUEST PATCH https://api.useparagon.com/projects//sdk/me // Headers Authorization: Content-Type: application/json // Body { "meta": { "Email": "sean@useparagon.com" } } ``` #### Using Metadata in Workflows Metadata properties are available for use in workflows in the variable menu of the Workflow Editor. To select a metadata property in a workflow, you'll first need to set a sample metadata object. From any workflow, click the Options menu in the top navigation and select **Set User Metadata**: A dialog will appear to set a sample metadata object that represents the object you will pass through to the API or SDK as shown above in [Associate Connected User with metadata](/apis/users#associate-connected-user-with-metadata). Any properties set in this sample object will be available for selection in the variable menu, in the "User Info" section: ### Get Connected User info and integration state You can access Connected User info (including any associated metadata) using `paragon.getUser` or with the REST API. ```js JavaScript SDK paragon.getUser(); // Returns: { authenticated: true, integrations: { salesforce: { enabled: true, credentialStatus: "VALID", // "INVALID" if account is unreachable providerData: {...}, // Account details for integration providerId: "00502000..." // Account's unique ID for integration } }, meta: {...}, // Metadata provided by your application userId: "12345" // User ID specified in "sub" field of Paragon User Token } ``` ```bash REST API // REQUEST GET https://api.useparagon.com/projects//sdk/me // Headers Authorization: Bearer // RESPONSE { "authenticated": true, "integrations": { "salesforce": { "enabled": true, "credentialStatus": "VALID", "providerData": {...}, "providerId": "00502000..." } }, "meta": {...}, "userId": "12345" } ``` #### Validating account status with the `credentialStatus` property If a previously connected account is unreachable (e.g. your user revokes access from the integration), the Connect Portal will show a warning and prompt your user to reconnect their account: You can check for this condition with the SDK with the `credentialStatus` property. For example: ```js paragon.getUser(); // Returns: { integrations: { salesforce: { enabled: false, credentialStatus: "INVALID", ... } }, ... } ``` If you are using the [Headless Connect Portal](/connect-portal/headless-connect-portal), you should show a reconnection prompt when `credentialStatus` is not `"VALID"`. You can initiate a reconnection flow with the same function used to start a connection flow: [.installIntegration(integrationType: string, installOptions?: InstallOptions) -> Promise\](/apis/api-reference#installintegration). ### Disconnecting integrations Integrations can be disconnected using `paragon.uninstallIntegration` or with the REST API. When an integration is disconnected, workflows for that integration will stop running for the authenticated user and any saved User Settings will be cleared. ```js // Use the integration name, as used in paragon.connect(); await paragon.uninstallIntegration("salesforce"); ``` Get the ID of the integration you want to disconnect, with the `/sdk/integrations` endpoint: **Request** ```bash GET https://api.useparagon.com/projects//sdk/integrations // Headers Authorization: Bearer ``` **Response** ```json [ { "id": "", "type": "salesforce", ... }, {...} ] ``` The `` can be used to disconnect the integration for the user: **Request** ```bash DELETE https://api.useparagon.com/projects//sdk/integrations/ // Headers Authorization: Bearer ``` # Concurrency SLA Source: https://docs.useparagon.com/billing/concurrency-limits Learn how concurrency is calculated in Paragon. Paragon's concurrency SLA is the number of [step executions](/monitoring/viewing-task-history#detailed-task-execution) that can run at a given time across all of your [Connected Users](/billing/connected-users). For example, if you have a concurrency SLA of 20, you can have up to 20 step executions running in the background at a given time. ### Concurrency Levels Our Concurrency SLA for our standard plans is as follows: | Plan | Concurrency SLA | | -------------- | ---------------------- | | **Trial** | **5** step executions | | **Pro** | **20** step executions | | **Enterprise** | **50** step executions | If you have any other questions regarding your concurrency SLA, please contact your Customer Success Manager. ### What happens if I reach my Concurrency SLA? When you exceed this SLA, new step executions will be queued up for execution and show as `Not Started` in [Task History](/monitoring/viewing-task-history). Paragon accepts and stores all executions and will only execute them once the concurrent workflows drop below the SLA limit. To upgrade your Paragon subscription to a higher usage tier for concurrent workflows, [contact Sales](mailto:sales@useparagon.com) or reach out to your Customer Success Manager. # Connected Users Source: https://docs.useparagon.com/billing/connected-users Learn how Connected Users are counted in Paragon. Connected Users represent your customers that are connected to integrations in Paragon. A Connected User typically represents an organization, but can be implemented to represent any entity, such as an individual user. Each Connected User is a **unique User ID connected to at least 1 integration.** A User ID is the subject (`sub`) field of the Paragon User Token used to [authenticate to the API or SDK](/getting-started/installing-the-connect-sdk#3.-call-paragon.authenticate). You can view and manage your Connected Users in the Paragon dashboard. Learn more in [Managing Connected Users](/monitoring/users). ## Connected User limits and pricing Your Paragon subscription includes a limit on Connected Users. You can view this limit and current usage in the header of the [Connected Users Dashboard](/monitoring/users). All [Admin users](/managing-account/teams#managing-roles-and-permissions) in your organization will receive automated email notifications when your usage reaches 70%, 85%, and 100% of your Connected Users limit. ### What happens if I reach my Connected Users limit? When you exceed this limit, new Connected Users will be unable to connect integrations. **Existing Connected Users will *****not***** be impacted**, and Workflows for existing Connected Users will continue to run. You can reduce your usage of Connected Users by deleting inactive users from the [Connected Users Dashboard](/monitoring/users). To upgrade your Paragon subscription to a higher usage tier for Connected Users, [contact Sales](mailto:sales@useparagon.com) or reach out to your Account Manager. # Task Usage Source: https://docs.useparagon.com/billing/tasks Learn how tasks are counted in Paragon. A task is a unit of work that occurs in the Paragon platform on behalf of your Connected User. * In [Workflows](/workflows/building-workflows), each successful Action, Request, and Function are counted as tasks. You can see which steps succeeded in the workflow execution view of the Task History page (see screenshot below). * All [Proxy API](/apis/proxy) requests are counted as tasks. ## How workflow steps count towards tasks The following steps count as tasks: * [Integrations](/resources/integrations) (e.g. Salesforce, Slack, Google Sheets) * [Request](/workflows/requests) * [Function](/workflows/functions) The following steps **do not** count as tasks: * [Triggers](/workflows/triggers) * [Conditional](/workflows/using-conditionals) * [Fan Out](/workflows/using-fan-out) * Response * Delay **Note:** While the Fan Out itself doesn't count as a task, the contents within Fan Outs count as tasks per iteration. ## Task limits The task limit is the maximum number of tasks you can run before your workflows stop executing during the current billing cycle. ## How task usage resets Task usage resets at the beginning of your billing period each month. Unused tasks will not roll over to the next billing period. ### What happens if I reach my task limit? If you are on a legacy plan that bills by task usage, you'll receive notification emails from Paragon as you get closer to your task limit. We'll send an email notifying you that your workflows have stopped executing. Users on any of our [paid plans](https://www.useparagon.com/pricing) have a five-day grace period to upgrade before workflows stop executing. Any unfinished tasks will show up in your [Task History](/monitoring/viewing-task-history) as a failed workflow. You can [replay stopped workflows](/monitoring/viewing-task-history#editing-and-replaying) when your billing cycle restarts or you upgrade your plan. Need more tasks? Upgrade to a [paid plan](https://useparagon.com/pricing) today! # API Release Notes Source: https://docs.useparagon.com/changelog/api Release notes for new versions of the Paragon REST API. ## Updates to GET /sdk/integrations and Proxy API To improve the ergonomics of the API, we are introducing a few changes to the GET `/projects/:projectId/sdk/integrations` and Proxy API endpoints for Custom Integrations. We are also removing some unnecessary fields from the response of the GET `/projects/:projectId/sdk/integrations` endpoint to improve performance. Please review these changes to ensure that your application is not using any of the fields scheduled for removal. **Affected endpoints:** * GET `/projects/:projectId/sdk/integrations` * [Proxy API](/apis/proxy) **Breaking changes:** * In GET `/projects/:projectId/sdk/integrations`, the `type` field of Custom Integrations will now be the full slug that is used in `paragon.connect()` calls. ```diff { "id": "77210f70-4f20-4eac-bded-825732b229c3", "projectId": "1ea8024c-23a7-4885-b925-c50d0faf9318", "customIntegrationId": "d8fe6169-8119-4cb0-a7a9-c2b18aff2c07", "name": "Example", - "type": "custom", + "type": "custom.example", "isActive": true, "configs": [...], "workflows": [...], "customIntegration": { "id": "d8fe6169-8119-4cb0-a7a9-c2b18aff2c07", "projectId": "1ea8024c-23a7-4885-b925-c50d0faf9318", "name": "Example", "isPublished": true, "slug": "custom.example" }, "hasCredential": true, "connectedUserLimitOnDevCred": 0, "connectedUserLimitReached": false, "brandColor": "#000000", "needPreOauthInputs": false, "authenticationType": "oauth", "sdkIntegrationConfig": null } ``` * In GET `/projects/:projectId/sdk/integrations`, some unnecessary fields are being removed from Integrations: * To optimize the performance of this endpoint, some fields of Integrations are being removed. Please ensure that the following fields are not in use by your application: * `integration.dateCreated` * `integration.dateUpdated` * `integration.resourceId` * `integration.configs[].dateCreated` * `integration.configs[].dateUpdated` * `integration.configs[].integrationId` * `integration.workflows[].dateCreated` * `integration.workflows[].dateUpdated` * `integration.workflows[].teamId` * `integration.workflows[].isOnboardingWorkflow` * `integration.workflows[].workflowVersion` * `integration.customIntegration.dateCreated` * `integration.customIntegration.dateUpdated` * `integration.customIntegration.projectId` * `integration.customIntegration.oauthScopes` * `integration.customIntegration.oauthIncludeClientAuthorizationHeader` * `integration.customIntegration.usePKCEInCodeExchange` * `integration.customIntegration.apiBaseUrl` * `integration.customIntegration.testEndpointPath` * `integration.customIntegration.isTestEndpointVerified` * `integration.customIntegration.apiAuthorization` * `integration.customIntegration.userProfileConfig` ```diff { "id": "f02dba2f-d149-4664-958d-138d546d987b", - "dateCreated": "2023-10-23T17:03:16.211Z", - "dateUpdated": "2023-10-23T17:03:16.211Z", "projectId": "1ea8024c-23a7-4885-b925-c50d0faf9318", "customIntegrationId": "208d5d99-bbb4-4147-b991-83e220da192c", - "resourceId": null, "type": "custom.spotify", "isActive": false, "configs": [ { "id": "70c9c3f6-f68c-4e06-921e-0ee678bc6a9f", - "dateCreated": "2023-10-23T17:03:16.211Z", - "dateUpdated": "2023-10-23T17:03:16.211Z", - "integrationId": "f02dba2f-d149-4664-958d-138d546d987b", "values": { "accentColor": "#000000", "description": "play music", "workflowMeta": {} } } ], "workflows": [ { "id": "0d6660ac-2396-4442-98a3-4321fa6ce42b", - "dateCreated": "2024-06-04T13:16:32.660Z", - "dateUpdated": "2024-06-04T13:17:03.374Z", "description": "Example Workflow", "projectId": "1ea8024c-23a7-4885-b925-c50d0faf9318", - "teamId": "72c5150b-6bfa-4972-9845-1350f3ee18bc", - "isOnboardingWorkflow": false, "integrationId": "b62baf56-5030-4105-9c78-dbf307e1ee94", - "workflowVersion": 1, "steps": [] } ], "customIntegration": { "id": "208d5d99-bbb4-4147-b991-83e220da192c", - "dateCreated": "2023-10-23T17:03:16.211Z", - "dateUpdated": "2023-10-23T17:03:16.211Z", - "projectId": "1ea8024c-23a7-4885-b925-c50d0faf9318", "name": "Spotify", "authenticationType": "oauth", "inputFields": [], "oauthAuthorizationUrl": { "type": "TOKENIZED", "parts": [{ "type": "VALUE", "value": "https://accounts.spotify.com/authorize", "dataType": "STRING" }], "dataType": "STRING" }, "oauthAccessTokenUrl": { "type": "TOKENIZED", "parts": [{ "type": "VALUE", "value": "https://accounts.spotify.com/api/token", "dataType": "STRING" }], "dataType": "STRING" }, - "oauthScopes": "user-read-private", - "oauthIncludeClientAuthorizationHeader": true, - "usePKCEInCodeExchange": false, - "apiBaseUrl": { "type": "TOKENIZED", "parts": [ { "type": "VALUE", "value": "https://api.spotify.com/v1", "dataType": "STRING" } ], "dataType": "STRING" }, - "testEndpointPath": { "type": "TOKENIZED", "parts": [], "dataType": "STRING" }, - "isTestEndpointVerified": false, - "apiAuthorization": { "type": "bearer", "token": { "type": "TOKENIZED", "parts": [ { "type": "CONNECT_CREDENTIAL_FIELD", "fieldType": "OAUTH_ACCESS_TOKEN" } ] } }, "isPublished": true, - "userProfileConfig": {}, "slug": "custom.spotify" }, "hasCredential": true, "connectedUserLimitOnDevCred": 0, "connectedUserLimitReached": false, "name": "Spotify", "brandColor": "#000000", "needPreOauthInputs": false, "authenticationType": "oauth", "sdkIntegrationConfig": null } ``` **Other non-breaking changes:** * Proxy API now supports using the `custom.name` format when sending Proxy requests for Custom Integrations * Instead of passing in a `customIntegrationId`, you will now be able to pass in `custom.name` (the same slug used for `paragon.connect`) directly to the Proxy API. * Example: ```diff - https://proxy.useparagon.com/projects/:projectId/sdk/proxy/custom/:customIntegrationId/:path + https://proxy.useparagon.com/projects/:projectId/sdk/proxy/custom.integrationName/:path ``` ## What do I need to do? * Verify that your use of `integrations.type` for Custom Integrations does not rely on the value being exactly `"custom"`. The new `type` field will include the full slug value, e.g. `custom.integrationName`. * Verify that you are not using any of the fields scheduled for removal from the API. ## When are these changes being released? * These changes will be released on July 7, 2025. # Paragraph Release Notes Source: https://docs.useparagon.com/changelog/paragraph Release notes for new versions of the Paragraph SDK and CLI. ### Updating to the latest version To update your Paragraph project to the latest version, run the following commands in your terminal: ```bash # Update the CLI npm install -g @useparagon/cli # Update the core libraries in your project para install --sync-versions ``` ## Release Notes * Fixes a compilation issue that could occur when using the `para pull` command in projects that have a Pipedrive integration. * Fixes an issue where pushing new projects initialized with Paragraph could result in a "Failed to get project comparison." error. * Fixes an issue where Request Step Pagination used in Custom Integrations could result in a compilation error. * Adds support for referencing combination inputs, such as the Azure DevOps State input. * Adds support for using numeric values in Custom Dropdown inputs defined in Paragraph projects. * Fixes an issue where nested step variables in a Request Step JSON body could create invalid references when pushing to a Paragon project. * Adds support for new Field Mapping input types, now supported for any integration. [Learn more here](/connect-portal/field-mapping). * Fixes an issue where `para pull` could fail if the workflow name contains a `/` character. * Adds support for Password-type inputs in the Connect Portal configuration. * Fixes an issue where Request steps without query parameters could cause an extra `?=` to be added to the URL after pulling/pushing. * Adds full support for pulling Resource Request steps. * Fixes type issues for App Event triggers using Field Mapping. * Fixes an issue where a nested object in the Request body could be pulled incorrectly as `[object Object]`. # Product Updates Source: https://docs.useparagon.com/changelog/product-updates Monthly updates on new features and improvements to the Paragon platform. ## ActionKit MCP: available and open source We have released an MCP server for ActionKit, an API supported by Paragon that provides access to pre-built actions for 130+ integrations to your users’ SaaS applications. The MCP includes a few optional extensions to the ActionKit API: * Automatically prompt users to authorize integrations with the [Connect Portal](https://docs.useparagon.com/getting-started/displaying-the-connect-portal) when their account isn't yet connected * Define [Custom Actions](https://github.com/useparagon/paragon-mcp#adding-custom-actions-with-openapi) with OpenAPI files * Allow [direct API access](https://github.com/useparagon/paragon-mcp#using-experimental-proxy-api-tool) to your agent as a tool 📖 View the repository [here](https://github.com/useparagon/paragon-mcp). ## New Developer Docs Find answers and API references faster with our new developer documentation site. Releasing improved content search, AI search, and navigation helping surface answers faster. 📖 See the new [docs here](/overview). ## ActionKit and ActionKit Logs With ActionKit, AI Agents can dynamically use Paragon to connect to their users' third-party applications like CRMs, email, calendars, and ticketing systems, and pick from dozens of ActionKit’s supported actions within each application. 📖 Learn more at [docs here.](/actionkit) You can now search, view, and trace your ActionKit calls with ActionKit Logs in Task History. * Understand how your AI agent is performing ActionKit calls on behalf of your users. * Investigate why Action calls fail for particular Connected Users. * Discover which ActionKit requests your users are utilizing and the parameters used to make those requests. 📖 Learn more at [docs here.](/actionkit/actionkit-logs) ## Custom Authentication Server Support You can now configure your own authentication server with a JSON Web Key Set (JWKS) endpoint to generate and manage Paragon User Tokens. 📖 Learn more at the [docs here.](https://docs-prod.useparagon.com/getting-started/installing-the-connect-sdk#setup-with-a-managed-authentication-service) ## Custom Dropdowns in Connect Portal You can now configure *Custom Dropdowns* to prompt users to select application values in the Paragon Connect Portal. 📖 Learn more at the [docs here.](/connect-portal/workflow-user-settings/custom-dropdowns) ## Platform Usability Updates Released usability updates for long text inputs and JSON views copy buttons within the Dashboard. ## Integration Usability Improvements * Released Field Mapping inputs for the Jira integration. * Improved error messaging for Google Calendar and Google Drive integrations. * Improved authentication stability for NetSuite and Airtable integrations. ## Custom Webhook Support You can now trigger your Paragon workflows from any event in any integration that has a HTTP Webhook API with the new Custom Webhooks feature! Paragon enables you to configure webhooks to subscribe to real-time events in your users' integration applications. For example, you can now subscribe to any event in the Slack Events webhook API and trigger your Paragon workflows. 📖 Learn more in [our docs](/resources/custom-webhooks). 👉 Join the [beta here](https://share.hsforms.com/19sUGNAW8TGqotRJPx92AwAdhpe2). ## Usability, Workflow Optimizations, Security Improvements * Allow Paragon developers ability to change how sensitive inputs appear in the Connect Portal. * Display and stability improvements to the Connect Portal and workflow editor. * Improvements to fanout step performance and stability. ## 🔒 Security Update * A CSRF vulnerability related to OAuth was discovered and patched in early September. ## 🚀 New Features ✨ **[Vimeo](/resources/integrations/vimeo) Integration!** You can now connect to your users' Vimeo accounts to manage their videos and video metadata. Paragon enables you to sync data between your app and your users’ Vimeo. For example, you can manage folders of videos or access video talk tracks in Vimeo. Learn more in [our docs](/resources/integrations/vimeo). ## 🛠 Improvements * Adds further support for different types of user authentication in NetSuite. * Improves internal handling of environment secrets. * Internal improvements to the Paragon dashboard. * Improvements to Google Calendar trigger instantiation and deletion. ## 🐛 Bug Fixes * Fixes a connection issue with the Custom Integration builder. ## 🛠 Improvements * Adds a loading state on the Disconnect button in the Connect Portal. * Dark mode Connect Portal UI improvements. * Whitelists `*.googleapis.com` domains in the Integration Request Step. * Improved error messages for the Paragon SDK and Connect Proxy API. * Improved UX for Marketo connection experience. * Improvements to Jira Connect Portal user settings. * Internal security and performance upgrades. * Improved error user interface for Connect Portal authentication errors. * Improvements to the ClickUp *New Comment on Task* workflow trigger. ## 🐛 Bug Fixes * Fixes an SDK issue with `paragon.connect()`. * Fixes an issue with Salesforce's textarea input field for the *Deploy Custom Field* action in the workflow editor. * Fixes an authentication issue for Google. * Fixes an issue around textArea inputs for Salesforce custom fields. * Fixes a UX issue with closing the Connect Portal and maintaining state. * Fixes an authentication issue for the External File Picker SDK feature. * Fixes an issue with uploading Files via the Integration Request Step in the workflow editor. * Fixes a display issue with the Connect Portal in the Jira integration. * Fixes an issue with the *Integration Enabled* trigger firing before required workflow values are entered. ## 🚀 New Features ✨ **Intellum Integration!**\ You can now connect to your users' Intellum accounts to manage their courses, enrollments, and users. Paragon enables you to sync data between your app and your users’ Intellum. For example, you can manage courses or update enrollments in your users' Intellum. Learn more in our docs. ✨ **LinkedIn Marketing Updates!**\ We've recategorized LinkedIn Marketing under the 'Advertising' category alongside Google Ads and TikTok Ads for better organization and updated the LinkedIn logo to maintain consistency across our platform. ✨ **ServiceNow User Settings!** Enhanced ServiceNow integrations by allowing users to specify statuses of incidents and tasks, improving the configuration options available in the Connect Portal. ✨ **Integration Enhancements!** * **Adobe AEM:** Improved authentication experience in the Connect Portal, streamlining user interactions and connections. * **PagerDuty:** Added default scopes for Classic OAuth type to facilitate better access control. * **Monday.com:** Updated the Item Updated trigger to include name change events. ✨ **Data Source Extensions:** * **Trello, ServiceNow, Linear:** We've extended our data sources for Trello (Member data), ServiceNow (Status data), and Linear (Assignee data), providing richer integration capabilities. **✨ LinkedIn Marketing Integration!** You can now connect to your users' LinkedIn Marketing accounts to manage their ad campaigns, audiences, and insights. Paragon enables you to sync data between your app and your users’ LinkedIn Marketing. For example, you can create ad campaigns or manage audiences in LinkedIn Marketing. Learn more in our docs. ✨ **Gmail Enhancements:** * **Send Message with Attachments:** We've updated our Gmail actions to include an attachment field in the "Send Message" action, enabling you to send emails with attachments seamlessly through our platform. ✨ **Slack Integration Enhancements:** * **Message Interactivity Triggers:** We’ve added support for message interactivity triggers in Slack, enabling you to create dynamic, interactive workflows based on user interactions with messages. ✨ **Integration Error Handling Improvements:** * Comprehensive error handling updates have been implemented across multiple platforms for the following integrations to enhance stability and user experience: Jira, HubSpot, Salesforce, Sage Intacct, Pipedrive, AWS S3. ## 🛠 Improvements * **Asana Integration - Archived Projects:** We have updated our Asana integration to allow users to filter out archived projects from their data sources, ensuring only active projects are visible and selectable. * **Expose Connect Credentials via SDK for Box**: Provides Connected User credentials for the Box integration to allow you to use the Box File Picker with Paragon. * **Task History Clarity:** Resolved an issue in Task History where preview user executions appeared to run, now ensuring accurate display and status reporting. ## 🐛 Bug Fixes * **Connection Error Handling:** Fixed an issue where integration errors were incorrectly thrown from `getConnectOptions` across multiple integrations like Pipedrive and Salesforce. * **Salesforce API Error Handling:** Resolved an error in Salesforce custom API requests that caused a failure when trying to read properties of an undefined object, ensuring smoother operation and data handling. * **Workflow Execution Replay Reliability:** Addressed an issue where workflow replays were failing due to incorrect handling of input data. * **Fix for Sage Intacct Integration**: Resolved an issue where passing JSON as a return format caused errors, ensuring smoother integrations with Sage Intacct. * **Fix HubSpot Actions Copy**: Updated text elements and fixed UI issues in the HubSpot integration, improving usability and consistency across the platform. * **Delete Associated Connect Credentials on Integration Deletion**: Ensured that deleting an integration also deletes associated connect credentials, preventing orphaned data and maintaining data integrity. * **Integration Error Handling Improvements:** Multiple updates to standardize and improve error handling across integrations: * Improved error messaging for User Settings and during authentication failures. * Resolved issues with capturing and displaying errors outside of integrations. * Fixed bugs related to improper error displays in test data for triggers and actions. * **Miscellaneous Fixes:** * Fixed a bug where project lists were not displayed in the intended order within our platform. * Addressed a critical bug where duplicate identifiers and a blocker in opening the Custom Integration Builder caused interruptions in user workflows. * Fixed issues across multiple stages of the LinkedIn Ads integration lifecycle for more reliable connections. * **Workflow and Integration Stability Fixes:** * **Zendesk Updates:** Improved the "Search Tickets" step and fixed trigger tests for "ticket created" and "ticket updated," ensuring more accurate and reliable ticket handling. * **Test Workflow Record Handling:** Fixed an issue where test workflows were incorrectly adding new records in the task history executions, ensuring cleaner and more accurate execution logs. * **Stability and Reliability Fixes:** * **Custom Integration Builder Stability:** Fixed a crash issue in the Custom Integration Builder on load in release environments, enhancing the stability and reliability of integration setup. * **Release and Environment Management:** * Fixed an issue where creating environments would inadvertently create two releases, streamlining the release management process. * **Error Handling and Stability Fixes:** * **Amazon S3 & Workday:** Addressed issues where errors were being returned as generic 500s, now providing more specific error messages. * **Asana:** Resolved issues where a bad client ID could cause 504 errors or stall worker-actions, enhancing system reliability. * **Zendesk:** Updated the "Search tickets" step and fixed trigger tests for "Ticket Created" and "Ticket Updated," ensuring more accurate and reliable ticket handling. * **LinkedIn Marketing:** Resolved connection issues to improve reliability and user experience. * **File Handling:** Fixed an issue where xlsx and text files were getting corrupted during upload, ensuring data integrity during file transfers. * **User Metadata Fix in SDK:** Resolved a bug where user metadata passed into `paragon.authenticate` for new connected users was returning `null` values. Metadata now persists correctly after initial creation. * **Asana Integration - Archived Projects:** Improved the Asana integration to allow users to exclude archived projects from project lists in data sources and workflow steps. * **Zendesk Action Field Update:** Enhanced the Zendesk 'Create Ticket' action with dynamically editable fields for Status, Priority, and Type fields, providing more flexibility in ticket creation. * **Linear Authentication Tooltip Corrected:** Updated the tooltip for "Authenticate as Application" in Linear integration to provide clearer guidance on its usage. * **Intellum Integration Warning Fixed:** Fixed an issue in the Intellum integration where development credentials warnings were incorrectly displayed. ## 🐛 Bug Fixes * **Salesforce Access Token Refresh Issue:** Resolved an issue where connect proxy requests in Salesforce did not refresh access tokens, ensuring continuous and secure access to Salesforce resources. * **UI Fixes in Task History:** Addressed an issue where the integration enable trigger UI was distorting in Task History, ensuring a cleaner and more user-friendly interface. * **npm Route Access Restored:** Resolved a critical issue where the `actions/configs` route in npm was being erroneously blocked by immutable message in release environments, restoring full functionality. * **Monday.com Task History Accuracy:** Fixed discrepancies between Task History and test step responses in Monday.com integrations, ensuring data consistency and reliability. * **Localhost Address Usage for Redirect URLs:** Resolved an issue in the `completeInstall` method that prevented the use of localhost addresses for the `redirectUrl` option, enhancing flexibility in development environments. * **Salesforce Connection Stability:** Addressed a bug in Salesforce integration where proxy requests did not properly refresh access tokens. * **Airtable Token Issue Resolved:** Fixed a bug where connections to Airtable would fail due to token issues, ensuring smoother integrations. * **Task Limit Error Correction:** Corrected an erroneous "Task Limit Reached" error for users on Trial plans using the Proxy APIs, enhancing the trial experience. * **Integration Request Limit Increased:** We've resolved an issue where custom integration requests with a body size greater than 10 MB would fail, now supporting larger data payloads. * **Fix for Hubspot Get Record By ID Issue:** Resolved a bug where the Get Record By ID action in Hubspot failed due to a large Request URI, ensuring seamless integration workflows. ## 🚀 New Features **✨ SAP Emarsys Integration!** You can now connect to your users' SAP Emarsys accounts to manage their contacts, segments, and campaigns. Paragon enables you to sync data between your app and your users’ SAP Emarsys. For example, you can create contacts or manage campaigns in SAP Emarsys. Learn more in our docs. * **Monday.com API Migration:** We've successfully migrated all actions, triggers, and data sources to the latest Monday.com API, ahead of the January 15th deprecation deadline. This ensures our platform remains compatible and fully functional with Monday.com services. ✨ **Shopify Trigger Enhancements!** We’ve expanded our Shopify integration with new triggers that enhance your ability to manage customer and shop data privacy: * **Customer Data Request:** You can now automate the fulfillment of customer data requests directly within our platform. * **Customer Data Erasure Request:** Easily handle requests for customer data deletion, ensuring compliance with privacy regulations. ✨ **Google Drive Picker Support:** With the new Google Drive Picker integration, you can now easily access and manage your files directly within Paragon. This feature is perfect for users who need to quickly incorporate documents into their workflows without leaving the platform. ## 🛠 Improvements * **Salesforce Integration Enhancements:** Updated our Salesforce integration to handle token expiration more effectively by including `403` status code checks. This improvement ensures more reliable connectivity by handling token renewals proactively. * **Salesforce Credential Refresh Optimization:** Enhanced credential refresh optimization has been implemented for Salesforce integrations, ensuring smoother and more efficient authentication processes. * **Improved Monday.com Integration Stability:** Resolved unexpected errors related to webhook unsubscriptions, providing a smoother experience for integrating with Monday.com. ## Updates Our [SDK](https://www.npmjs.com/package/@useparagon/connect) has been updated to version 1.0.3, which includes the following changes: * Support for `paragon.completeInstall` function ([docs](/resources/integrations/shopify)), required for Redirect Pages in published Shopify and Pipedrive integrations * Support for `allowMultipleCredentials` parameters in Headless Connect Portal functions *** You can update the SDK by running: ``` npm install @useparagon/connect ``` If you are currently using the script tag installation, these updates have been published in version 2.93.1. ## 🚀 New Features ✨ **[Amazon S3](/resources/integrations/amazon-s3) Actions!** You can now access the following actions when building workflows for Amazon S3: * Upload File * List Files * Download File * Create Folder * Delete Folder ✨ **[Dynamics 365 Business Central](/resources/integrations/dynamicsbusinesscentral) Triggers!** You can now trigger Dynamics 365 Business Central workflows when records are created, updated, and deleted in your users' Dynamics 365 Business Central accounts, making it easy to sync data in real-time between your users' Dynamics 365 Business Central and your app. Learn more in our docs. **✨ DocuSign Integration!** You can now connect to your users' DocuSign accounts to manage their documents and signatures. Paragon enables you to sync data between your app and your users’ DocuSign. For example, you can create contracts or manage signatures in DocuSign. Learn more in our docs. * **OAuth Client Credentials Authorization:** Enhanced security by adding OAuth client credentials authorization type, allowing more robust and secure integration capabilities for your applications. ## 🛠 Improvements * **Notion Integration Upgrade:** Optimized the credential refresh process for Notion, ensuring smoother and more reliable integration performance. * Improvements to our token syncing mechanism for HubSpot. * Improvements to our token syncing mechanism for OneNote. ## 🐛 Bug Fixes * **Azure DevOps Integration:** Resolved an issue where actions to create work items were failing. * **Microsoft Dynamics Credential Handling:** Fixed a bug in credential type management, ensuring smoother authentication and connection stability. * Fixes a bug where users were redirected to a blank page instead when deleting users from the Connected Users Dashboard. * **Gusto Integration Link Correction:** Updated the 'Update Employee Action' in Gusto to correctly redirect to the 'API Versioning' guide, ensuring accurate and helpful documentation access. ## 🚀 New Features ✨ **[PagerDuty](/resources/integrations/pagerduty) Integration!** You can now connect to your users' PagerDuty accounts to manage their incidents and on-call schedules. Paragon enables you to sync incident data between your app and your users’ PagerDuty. For example, you can add new incidents or manage on-call schedules in PagerDuty. Learn more in [our docs](/resources/integrations/pagerduty). ✨ **New [Notion](/resources/integrations/notion) Triggers!** You can now access the following triggers when building workflows for Notion: * Page Created * Page Updated ## 🐛 Bug Fixes * Fixes an authentication issue for Google Drive. * Fixes an authentication issue for the Workday integration. ## 🛠 Improvements * Internal improvements * You can now add attachments when sending messages in Microsoft Outlook! ## 🚀 New Features ✨ **Default Account Types!** You can now choose which type of account you would like to connect to programmatically! This is great for cases where you want to your customers to only connect a production Salesforce account. To default the Connect Portal to a certain type of account, define the `accountType` parameter: ```js paragon.connect("salesforce", { accountType: "default" }); ``` ## 🐛 Bug Fixes * Fixes an issue where Fan In values were concatenated to a string rather than an array of results. * Fixes an issue where users were unable to filter Task History by specific integrations. ## 🚀 New Features ✨ **[Wordpress](/resources/integrations/wordpress) Integration!** You can now connect to your users' Wordpress accounts to manage their pages, posts, and stats. Paragon enables you to sync data between your app and your users’ Wordpress. For example, you can create new posts or fetch post stats and insights in Wordpress. Learn more in [our docs](/resources/integrations/wordpress). ✨ **[Google Analytics GA4](/resources/integrations/googleanalyticsga4) Integration!** You can now connect to your users' Google Analytics GA4 accounts to manage their reports and analytics. Paragon enables you to sync data between your app and your users’ Google Analytics. For example, you can create new reports or periodically fetch new analytics in Google Analytics GA4 properties. Learn more in [our docs](/resources/integrations/googleanalyticsga4). ✨ **[ADP Workforce Now](/resources/integrations/adp-workforce-now) Integration!** You can now connect to your users' ADP Workforce Now accounts to manage their staffing and payroll. Paragon enables you to sync data between your app and your users’ ADP Workforce Now. For example, you can add new employees or sync payroll in ADP Workforce Now. Learn more in [our docs](/resources/integrations/adp-workforce-now). ✨ **New [Google Calendar](/resources/integrations/google-calendar) Triggers!** You can now access the following native, webhook-based triggers when building workflows for Google Calendar: * New Event * Event Updated * Event Cancelled ⚠️ These new webhook-based triggers introduce the *Legacy* label on existing Workflow triggers. There is no affect to deployed workflows with these legacy triggers. They will continue to execute as expected. ✨ **New [Close](/resources/integrations/close) Triggers!** You can now access the following triggers when building workflows for Close CRM: * Record Created * Record Updated * Record Deleted These triggers support subscribing to changes around `Leads`, `Opportunities`, `Contacts`, and `Tasks` within Close CRM. ✨ **[Apollo.io](/resources/integrations/apollo-io) Integration!** You can now connect to your users' Apollo.io accounts to manage their accounts, contacts, and sequences. Paragon enables you to sync data between your app and your users’ Apollo.io. For example, you can add new contacts or manage sequence stages in Apollo.io. Learn more in [our docs](/resources/integrations/apollo-io). ✨ **[Google Drive](/resources/integrations/google-drive) Actions!** You can now *Export a File* to a raw file blob when building workflows for Google Drive. ## 🛠 Improvements * Internal improvements * Internal improvements to the Paragon Proxy API * Adds support for OAuth-based authentication to the AirTable integration * Adds support for the `googleapis.com` domain in the proxy API for the Gmail integration * Allows developers to receive a download token for Zoom meeting recording workflow actions in payload responses * Improvements to Zoho CRM workflow triggers * Improvements to Klaviyo error messaging on empty action inputs * Improvements to Paragon SDK loading efficiencies * Improvements to pagination performance * Improvements to Event Destinations payloads * Adds a `completeInstall` function to the SDK for installing integrations that originate from an Application Marketplace ([Read more](/apis/api-reference)) * Internal improvements to memory build-up * Internal codebase efficiencies * UI updates to Asana workflow triggers * Internal improvements to our integration authentication manager * UI improvements for workflow triggers for Monday.com and Quickbooks * Provides more specific errors for Klayvio *Send Campaign* action * Improves error handling for the Marketo integration now returning a JSON-parsable error message ## 🐛 Bug Fixes * Fixes an authentication issue for the Gmail integration * Internal improvements to integration credential caching * Fixes Paragon Connect proxy request issues * Fixes a issue with generating new Signing Keys * Fixes an issue with Salesforce's *Create Record Custom Object* * Fixes an issue related to workflow trigger payload filtering in Zoho CRM * Fixes an issue related to the Azure DevOps Connect Portal ## 🚀 New Features ✨ **[Quip](/resources/integrations/quip) Integration!** You can now connect to your users' Quip accounts to manage their documents and spreadsheets. Paragon enables you to sync data between your app and your users’ Quip. For example, you can create documents or manage existing Sheets and Threads in Quip. Learn more in [our docs](/resources/integrations/quip). ✨ **[Shortcut](/resources/integrations/shortcut) Actions!** You can now access the following actions when building workflows for Shortcut: * Create Story * Update Story * Get Story by ID * Get Stories by Project * Get Stories by Epic * Search Stories * Create Epic * Update Epic * Get Epic by ID * Delete Epic * Create Project * Update Project * Get Project by ID * Delete Project ✨ **New [Asana](/resources/integrations/asana) Trigger!** You can now trigger workflows whenever an Asana task is deleted. ✨ **[Adobe Acrobat Sign](/resources/integrations/adobe-acrobat-sign) Integration!** You can now connect to your users' Adobe Acrobat Sign accounts to manage their lists, subscribers, and campaigns. Paragon enables you to sync data between your app and your users’ Adobe Acrobat Sign. For example, you can add new subscribers to lists or campaigns or manage lists or campaigns in Adobe Acrobat Sign. Learn more in [our docs](/resources/integrations/adobe-acrobat-sign). ✨ **New [Slack](/resources/integrations/slack) Trigger!** You can now access a *File Deleted* trigger when building workflows for Slack. 🚀 **Other New Features** * Adds ability for a developer to specify a token-type from the Slack Integration Request Step. ✨ **[Miro](/resources/integrations/miro) Integration**! You can now connect to your users' Miro accounts to manage their boards and documents. Paragon enables you to sync data between your app and your users’ Miro accounts. For example, you can create new documents and manage items within boards in Miro. ✨ **[Freshsales](/resources/integrations/freshsales) Integration**! You can now connect to your users' Freshsales accounts to manage their deals, contacts, and leads. Paragon enables you to sync data between your app and your users’ Freshsales accounts. For example, you can add new contacts or update deal stages in Freshsales. ✨ **[Figma](/resources/integrations/figma) Actions!** You can now access the following actions when building workflows for Figma: * Get File by ID * Get File Nodes * Get Rendered Image from File * Get Users' Projects * Get Project Files * Create Comment * Get Comments by File * Delete Comment * Create Comment Reaction * Get Comment Reactions by File * Delete Comment Reaction ✨ **[Coda](/resources/integrations/coda) Actions!** You can now access the following actions when building workflows for Coda: * Create Document * Get Document by ID * Search Documents * Delete Document * Get Table by ID * Search Tables ✨ **[Adobe Experience Manager](/resources/integrations/adobe-experience-manager) Actions!** You can now access the following actions when building workflows for Adobe Experience Manager: * Create Folder * Delete Folder * Create an Asset Rendition * Update an Asset Rendition * Delete an Asset Rendition * Delete an Asset ## 🛠 Improvements * Allows Paragon developers to author Outlook integrations enabling the connection and additional privileges of Microsoft organization administrators. Allows a Paragon developer to use Microsoft's *application permission types* * UI improvements to the Marketo integration * Improvements to workflow engine monitoring * UI improvements for Zoom and Asana triggers * Added a saving indicator to the Connect Portal * Improvements to Shopify trigger payload date accuracy * Improvements to pagination for Shopify actions * Improvements to Pipedrive workflow trigger record filtering ## 🐛 Bug Fixes * Fixes a dashboard-level bug preventing Paragon developers from viewing their integrations' settings under certain circumstances * Fixes an issue with URL query parameters not appearing in the received request payload * Fixes issues related to *Fan In* values in the workflow editor * Fixes an invalid URL for the Connect Portal image assets * Fixes an issue with multiple-account authorization and the Connect Portal * Fixes an issue with User names in the Task History dashboard * Fixes an issue where Jira triggers were not detecting new records under certain circumstances * Fixes an issue with parameter parsing for the *Update Items* workflow action in the Monday.com integration * Fixes an issue where Google Sheets and Google Drive triggers were firing too frequently * Fixes an issue with certain HubSpot records having truncated payloads * Fixes a visual issue with the Preview Portal and workflow editor inputs * Fixes an issue where workflows were resolving data from test workflows * Fixes an issue with the Pardot Connect Portal * Fixes an issue with the Azure DevOps integration authentication mechanism * Fixes an issue with HubSpot error state when an optional payload parameter is not passed * Fixes an issue with Fan Out and "Fan-in" workflow steps incorrectly resolving as empty arrays * Fixes an issue with the Paragon dashboard log-in process on Safari browsers ## New ## 🛠 Improvements ⚠️ **HubSpot Workflow Triggers Reverted** ⚠️ This release reverts recent work to improve the HubSpot webhook triggers. **No action is required from developers to maintain their currently deployed workflows.** 🛠 **Other Platform Improvements** * Improvements to the Google Drive trigger test step experience * Improvements to the Gmail integration error object * Exposes a request header for the Proxy API allowing developers to specify token-type for the Slack integration ## 🐛 Bug Fixes * Fixes a visual issue with integration logo icons * Fixes an issue with certain workflows not completing properly * Fixes extraneous executions for Marketo's workflow trigger configured for Leads ## 🛠 Improvements * Adds the Connected User ID to the workflow execution view in Task History. * Provides more accurate statuses to workflow executions. * Improvements to workflow execution efficiencies. * Provides more specific error details for the Jira integration. * Adds a new Data Source for Projects for the Asana integration. * Adds support for accepting JSON as input for creating Issues in the Jira integration. ⚠️ **HubSpot Trigger Improvements** * Adds more performant, webhook-based triggers for the HubSpot integration. * Developers may notice their HubSpot `Record Created`, `Record Updated`, and `Record Deleted` workflow triggers have `(Legacy)` appended to their labels. * **No action is required to maintain stability of existing deployed workflows.** These workflows will remain stable as there is no change to existing deployed workflows. * Developers may choose to opt-in to using the new workflows by selecting the new `Record Created` and `Record Deleted` triggers in the workflow editor which will configure webhook-based notifications in their HubSpot applications. ⚠️ **Outlook Trigger Improvements** * Adds more performant, webhook-based triggers for the Outlook integration. * Developers may notice their Outlook `Event Created`, `Event Updated`, `Event Removed`, and `New Message` workflow triggers have `(Legacy)` appended to their labels. * Developers may choose to opt-in to using the new workflows by selecting the new `Event Created`, `Event Updated`, `Event Removed`, and `New Message` triggers in the workflow editor which will configure webhook-based notifications in their Outlook applications. 🛠 **Other Platform Improvements** * Adds improvements to Test Step payloads for triggers in the Intercom integration. ## 🐛 Bug Fixes * Fixes issues with triggers not showing up in Task History. * Fixes issues with conditional operators in the Salesforce integration * Fixes an issue where *Test Step* fails to execute when the workflow is not deployed. * Fixes an issue where the Outlook integration `Event Created` trigger would fire for duplicate events. * Fixes validation errors in the Front integration. * Fixes UI issues for the Monday.com integration. * Fixes an issue with the Custom Integration Builder API key inputs. * Fixes issues with OneDrive user settings not loading. * Fixes an issue with API-key-based authentication for the Azure DevOps integration. * Fixes an issue where Google Calendar trigger runs for duplicate events. * Fixes and issue with searching for records for the DocuSign integration ## 🚀 New Features ✨ **New [Workday](/resources/integrations/workday) Integration!** You can now connect to your users' Workday accounts to manage their employees. Paragon enables you to sync data between your app and your users’ Workday. For example, you can add new employees to lists or manage PTO requests in Workday. ✨ **New [Box](/resources/integrations/box) Actions!** You can now access the following actions when building workflows for Box: * Save File * Get File by ID * List Files * Create Folder * Move Folder * Get Folder by ID * Search Folders * Delete Folders ✨ **New [Intercom](/resources/integrations/intercom) Triggers!** You can now access the following triggers when building workflows for Intercom: * Company Created * Company Updated * Contact Created * Contact Updated ✨ **New [OneDrive](/resources/integrations/onedrive) Actions!** You can now access the following actions when building workflows for OneDrive: ✨ **New [Google Drive](/resources/integrations/google-drive) Actions!** You can now access the following actions when building workflows for Google Drive: * Delete Folder ✨ **New [Dropbox](/resources/integrations/dropbox) Action!** You can now access the `Get Folder by ID` action when building workflows for Dropbox. ## 🚀 New Features ✨ **Project Manager!** We've given the top portion of Paragon a new coat of paint! You can now switch between projects by clicking your project's name in the top-left corner and selecting one from the drop-down. Clicking the "Manage Projects" button will take you straight to the **Project Manager**, where you can switch between projects or rename any previously named project. ✨ **New [HubSpot](/resources/integrations/hubspot) Trigger!** You can now access the `Record Deleted for Privacy (GDPR)` trigger for HubSpot. This allows you to trigger workflows when a record is deleted for privacy reasons. ✨ **New [GitHub](/resources/integrations/github) Triggers!** You can now access the following triggers when building workflows for GitHub: * Issue Created * Issue Updated * PR Created * PR Updated * Project Created * Project Updated ✨ **[Dropbox Sign](/resources/integrations/dropboxsign) Actions!** You can now access the following actions when building workflows for Dropbox Sign: * Create and Send Signature Request * Update Signature Request * Get Signature Request by ID * Search Signature Requests * Cancel Incomplete Signature Request * Download Files ✨ **[Todoist](/resources/integrations/todoist) Actions!** You can now access the following actions when building workflows for Todoist: * Create Project * Update Project * Get Project by ID * Get All Projects * Delete Project * Create Task * Update Task * Get Task by ID * Search Tasks * Close Task * Delete Task ✨ **More [GitHub](/resources/integrations/github) Triggers!** ✨ **More [Google Drive](/resources/integrations/google-drive) Actions!** You can now access the `Search Folders` action for Google Drive. This allows you to create workflows that are capable of searching folders at different depths on Paragon. ## 🛠 Improvements * The Hubspot `Search for Custom Object` types previously returned `null` values for every unset field. Changed the behavior so that they are filtered the same as other `Search record` types. * Adds support for the `archiver` npm library. * Adds filter search for Pipedrive's `Record Created` and `Record Updated` triggers. ## 🐛 Bug Fixes * Fixes an issue where workflows with Delay steps would have actions appear in the wrong order when viewing their Task History executions. * Fixes an issue where the `Search Records` action for HubSpot fails when attempting to search over 10k records. * Configuration settings when adding data sources no longer disappears after a few seconds * Fixes an issue where the `Record Deleted` trigger for HubSpot did not properly support Custom Objects. * Fixes an issue with the `Search Contacts` action for Intercom. * Fixes an issue where the Connect Portal could potentially crash when passing field mapping options from the Connect SDK. * Fixes an issue with the token refresh mechanism for Dropbox Sign. ## 🚀 New Features ✨ **[Microsoft Teams](/resources/integrations/microsoft-teams) Triggers!** You can now trigger Microsoft Teams workflows when chats and channels are created or updated in your users' Microsoft Teams accounts, making it easy to sync data in real-time between your users' Microsoft Teams and your app. Learn more in our docs. ✨ **More [ClickUp](/resources/integrations/clickup) Triggers!** You can now access the following triggers when building workflows for ClickUp: * New Folder Created * Folder Updated * New List Created * List Updated * New Space Created * Space Updated ✨ **More [Google Drive](/resources/integrations/google-drive) Triggers!** You can now trigger workflows when Files are deleted from your users' Google Drive accounts! ✨ **More [Gmail](/resources/integrations/gmail) Triggers!** You can now access the following triggers when building workflows for Gmail: * Thread Modified ✨ **[Sharepoint](/resources/integrations/sharepoint) Triggers!** You can now trigger Sharepoint workflows when items are created or updated in your users' Sharepoint accounts, making it easy to sync data in real-time between your users' Sharepoint and your app. Learn more in [our docs](/resources/integrations/sharepoint). ✨ **[Adobe Experience Manager](/resources/integrations/adobe-experience-manager) Integration!** You can now connect to your users' Adobe Experience Manager accounts to manage their digital assets. Paragon enables you to sync data between your app and your users’ Adobe Experience Manager. For example, you can create or manage digital assets in Adobe Experience Manager. Learn more in [our docs](/resources/integrations/adobe-experience-manager). ✨ **More [Google Drive](/resources/integrations/google-drive) Actions!** You can now access the following actions when building workflows for Google Drive: * Get File by ID ✨ **[npm](https://www.npmjs.com/package/@useparagon/connect) Support for Paragon's SDK!** You can now install the Paragon SDK with npm! Just type `npm install @useparagon/connect` in your application's console to get started. Learn more in [our docs](/getting-started/installing-the-connect-sdk). ✨ **[Front](/resources/integrations/front) Actions!** You can now access the following actions when building workflows for Front: * Create Account * Update Account * Get Account by ID * Search Accounts * Delete Account * Create Contact * Update Contact * Get Contact by ID * Search Contacts * Delete Contact ✨ **More [Asana](/resources/integrations/asana) Actions!** You can now access the following actions when building workflows for Asana: * Get Task by External ID * Add Task to Section ✨ **[Confluence](/resources/integrations/confluence) Actions!** You can now access the following actions when building workflows for Confluence: * Create Page * Update Page * Get Page by ID * Get Pages in Space * Get Pages by Label * Search Pages * Delete Page * Get Space By ID * Search Spaces ✨ **[Salesloft](/resources/integrations/salesloft) Actions!** You can now access the following actions when building workflows for Salesloft: * Create an Account * Update an Account * Get an Account * Delete an Account * Create a Custom Field * Update a Custom Field * Get a Custom Field * Delete a Custom Field * Search Custom Fields * Create a Call * Get a Call * Search Calls * Create a Person * Update a Person * Get a Person * Delete a Person * Search Persons * Create a Task * Update a Task * Get a Task * Search Tasks ✨ **[Salesloft](/resources/integrations/salesloft) Triggers!** You can now trigger Salesloft workflows when people and accounts are created and updated in your users' Salesloft accounts, making it easy to sync data in real-time between your users' Salesloft and your app. Learn more in our docs. ✨ **[Slack](/resources/integrations/slack) Triggers!** You can now trigger Slack workflows when direct, group, and channel messages are sent or updated in your users' Slack accounts, making it easy to sync data in real-time between your users' Slack and your app. Learn more in our docs. ✨ **[Greenhouse](/resources/integrations/greenhouse) Triggers!** You can now trigger Greenhouse workflows when candidates and jobs are created and updated in your users' Greenhouse accounts, making it easy to sync data in real-time between your users' Greenhouse and your app. Learn more in our docs. ✨ **[Sailthru](/resources/integrations/sailthru) Integration!** You can now connect to your users' Sailthru accounts to manage their lists, subscribers, and campaigns. Paragon enables you to sync data between your app and your users’ Sailthru. For example, you can add new subscribers to lists or campaigns or manage lists or campaigns in Sailthru. Learn more in [our docs](/resources/integrations/sailthru). ✨ **[Todoist](/resources/integrations/todoist) Integration!** You can now connect to your users' Todoist accounts to manage their projects and tasks. Paragon enables you to sync data between your app and your users’ Todoist. For example, you can create items or manage tasks and issues in Todoist. Learn more in [our docs](/resources/integrations/todoist). ✨ **[Dropbox](/resources/integrations/dropbox) Triggers!** You can now trigger Dropbox workflows when files are created, updated, and deleted in your users' Dropbox accounts, making it easy to sync data in real-time between your users' Dropbox and your app. Learn more in our docs. ✨ **[Gmail](/resources/integrations/gmail) Triggers!** You can now trigger Gmail workflows when threads are created and updatedm in your users' Gmail accounts, making it easy to sync data in real-time between your users' Gmail and your app. Learn more in our docs. ## 🐛 Bug Fixes * Fixes an issue where User and Workflow Settings picklists are not searchable when there's an error in the input. * Resolves an issue where filters did not appear properly when using the `Record Deleted` trigger for Companies in HubSpot. * Fixes an issue where workflows that are enabled by default were not working for integrations that had extra configuration settings after authenticating. * Fixes an authentication issue for the Klaviyo Request step. ## 🛠 Improvements * Updates the Pardot Connect Portal to help end users find their Business Unit ID. * You can now access `https://www.googleapis.com` in Google Sheets. * Updates the error responses for ClickUp, Asana, and Trello to parsed JSON. * Adds support for GitHub apps and OAuth apps to the GitHub integration. ## 🚀 New Features ✨ **[Google Docs](/resources/integrations/googledocs) Integration!** You can now connect to your users' Google Docs accounts to manage their documents. Paragon enables you to sync data between your app and your users’ Google Docs. For example, you can create documents or sync documents in Google Docs. Learn more in [our docs](/resources/integrations/googledocs). ✨ **[Workable](/resources/integrations/workable) Integration!** You can now connect to your users' Workable accounts to manage their applications, candidates, and resumes. Paragon enables you to sync data between your app and your users’ Workable. For example, you can get resumes or manage candidates' applications in Workable. Learn more in [our docs](/resources/integrations/workable). ✨ **[Gainsight](/resources/integrations/gainsight) Integration!** You can now connect to your users' Gainsight accounts to manage their records. Paragon enables you to sync data between your app and your users’ Gainsight. For example, you can create records or manage records in Gainsight. Learn more in [our docs](/resources/integrations/gainsight). ✨ **[Google Drive](/resources/integrations/google-drive) Triggers!** You can now trigger Google Drive workflows when files are created and updated in your users' Google Drive accounts, making it easy to sync data in real-time between your users' Google Drive and your app. Learn more in [our docs](/resources/integrations/google-drive). ✨ **[Zendesk Sell](/resources/integrations/zendesksell) Actions!** You can now access the following actions when building workflows for Zendesk Sell: * Create Record * Update Record * Get Record by ID * Search Records * Delete Record ✨ **More [Slack](/resources/integrations/slack) Actions!** You can now access the following actions when building workflows for Slack: * Search Messages ✨ **[Keap](/resources/integrations/keap) Integration!** You can now connect to your users' Keap accounts to create, access, and update records. Paragon enables you to sync data between your app and your users’ Keap. For example, you can create records or sync records in Keap. Learn more in [our docs](/resources/integrations/keap). ✨ **[TikTok Ads](/resources/integrations/tiktokads) Integration!** You can now connect to your users' TikTok Ads accounts to manage their campaigns, groups, and ads. Paragon enables you to sync data between your app and your users’ TikTok Ads. For example, you can create ad creatives or take action on your customers' ad conversions in TikTok Ads. Learn more in [our docs](/resources/integrations/tiktokads) Integration!). ✨ **[Figma](/resources/integrations/figma) Integration!** You can now connect to your users' Figma accounts to manage their files. Paragon enables you to sync data between your app and your users’ Figma. For example, you can create files or manage files in Figma. Learn more in [our docs](/resources/integrations/figma). ✨ **[OneNote](/resources/integrations/onenote) Integration!** You can now connect to your users' OneNote accounts to manage their notebooks and pages. Paragon enables you to sync data between your app and your users’ OneNote. For example, you can create pages or manage notebooks in OneNote. Learn more in [our docs](/resources/integrations/onenote). ✨ **[Zoho People](/resources/integrations/zohopeople) Integration!** You can now connect to your users' Zoho People accounts to manage their employees, time off, and timesheets. Paragon enables you to sync data between your app and your users’ Zoho People. For example, you can create employee time off requests or manage employee information in Zoho People. Learn more in [our docs](/resources/integrations/zohopeople). ✨ **[Google Sheets](/resources/integrations/google-sheets) Triggers!** You can now trigger Google Sheets workflows when files and rows are created and updated in your users' Google Sheets accounts, making it easy to sync data in real-time between your users' Google Sheets and your app. Learn more in our docs. ✨ **[Notion](/resources/integrations/notion) Actions!** You can now access the following actions when building workflows for Notion: * Create a Page * Update a Page * Get a Page * Archive a Page * Update a Block * Retrieve a Block * Delete a Block ✨ **[Front](/resources/integrations/front) Integration!** You can now connect to your users' Front accounts to manage their conversations, messages, and contacts. Paragon enables you to sync data between your app and your users’ Front. For example, you can create or update contacts or send messages to contacts in Front. Learn more in [our docs](/resources/integrations/front). ✨ **[Confluence](/resources/integrations/confluence) Integration!** You can now connect to your users' Confluence accounts to access, create, and update their documents. Paragon enables you to sync data between your app and your users’ Confluence. For example, you can create and update documents or manage documents in Confluence. Learn more in [our docs](/resources/integrations/confluence). ✨ **[OneDrive](/resources/integrations/onedrive) Actions!** You can now access the following actions when building workflows for OneDrive: * Save File * Get File * List Files ✨ **[Shortcut](/resources/integrations/shortcut) Integration!** You can now connect to your users' Shortcut accounts to manage their items and epics. Paragon enables you to sync data between your app and your users’ Shortcut. For example, you can create or update items or manage epics in Shortcut. Learn more in [our docs](/resources/integrations/shortcut). ✨ **[Amplitude](/resources/integrations/amplitude) Integration!** You can now connect to your users' Amplitude accounts to upload, export, and query event data. Paragon enables you to sync data between your app and your users’ Amplitude. For example, you can create event data or export event data in Amplitude. Learn more in [our docs](/resources/integrations/amplitude). ✨ **[OneDrive](/resources/integrations/onedrive) Triggers!** You can now trigger OneDrive workflows when files are changed in your users' OneDrive accounts, making it easy to sync data in real-time between your users' OneDrive and your app. Learn more in [our docs](/resources/integrations/onedrive). ✨ **[Coda](/resources/integrations/coda) Integration!** You can now connect to your users' Coda accounts to manage their documents and tables. Paragon enables you to sync data between your app and your users’ Coda. For example, you can create new documents or update rows in Coda. Learn more in [our docs](/resources/integrations/coda). ✨ **More [Trello](/resources/integrations/trello) Triggers!** You can now trigger workflows when Boards are created and updated in your users' Trello accounts! ✨ **More [Jira](/resources/integrations/jira) Triggers!** You can now trigger workflows when Projects are created and updated in your users' Trello accounts! ✨ **Role-Based Access Control!** Role-Based Access Control allows you to give team members different levels of visibility to your Paragon projects. For example, you can: * Assign support team members with **Support** roles for access to the Connected Users and Task History pages only * Designate specific users with **Admin** roles to manage global settings, including team member access and billing information We recommend giving team members the minimal level of access they need, according to the principle of least privilege. While Admin and Member roles are available on all plans, Role-Based Access Control, such as the Support role, is available for Paragon customers on Enterprise plans. To learn more, contact your Customer Success Manager or [sales@useparagon.com](mailto:sales@useparagon.com). ✨ **[OneNote](/resources/integrations/onenote) Actions!** You can now access the following actions when building workflows for OneNote: * Update Page * Get Page by ID * Delete Page * Search Pages ✨ **[Lever](/resources/integrations/lever) Triggers!** You can now trigger Lever workflows when candidates and postings are created or updated in your users' Lever accounts, making it easy to sync data in real-time between your users' Lever and your app. Learn more in our docs. ## 🛠 Improvements * Adds support for filters for HubSpot triggers. * Adds access to the NetSuite account ID and provider data to the Dynamic Variable Menu. * Removes `https://www.googleapis.com/auth/drive` as one of the required scopes of the Google Drive integration. * Updates the error code for triggering workflows that aren't enabled to `Workflow not enabled for this user.` * Adds the `jsforce` npm library to the Function step. * Fixes an issue with Asana that results in blank fields causing other fields to become unset unexpectedly. ## 🐛 Bug Fixes * Fixes an issue where the workflow execution status in Task History get stuck on `Running`. * Fixes an issue where calling `paragon.authenticate()` with metadata would cause a `500` error. * Resolves an issue where workflow executions would not match the contents of their tasks. * Fixes an issue where custom integration icons would not appear correctly in the Custom Integration Builder. * Fixes a display issue that causes the Test Shelf to only appear once a workflow test has finished executing. ## 🚀 New Features ✨ **[Copper](/resources/integrations/copper) Integration!** You can now connect to your users' Copper accounts to manage their records. Paragon enables you to sync data between your app and your users’ Copper. For example, you can create new records or manage records in Copper. Learn more in [our docs](/resources/integrations/copper). ✨ **[Box](/resources/integrations/box) Integration!** You can now connect to your users' Box accounts to manage, create, and update files. Paragon enables you to sync data between your app and your users’ Box account. For example, you can create files or sync files in Box. Learn more in [our docs](/resources/integrations/box). ✨ **[Task History API](/apis/task-history)!** The [Task History API](/apis/task-history) allows you to query your users' usage of integration workflows and access data from historical workflow executions. The Task History API can be used to analyze integration usage or pull information about historical workflow executions into your application. For example, you can use the Task History API to: * Query the number of workflow executions that ran last week for the Salesforce integration * Query all failed workflow executions for a specific user * Export all tasks that occurred in a specific month into Google BigQuery ✨ **[Notion](/resources/integrations/notion) Integration!** You can now connect to your users' Notion accounts to manage their pages and databases. Paragon enables you to sync data between your app and your users’ Notion. For example, you can create pages or manage databases in Notion. Learn more in [our docs](/resources/integrations/notion). ✨ **[Hive](/resources/integrations/hive) Integration!** You can now connect to your users' Hive accounts to manage their tasks and issues. Paragon enables you to sync data between your app and your users’ Hive. For example, you can create tasks or manage items in Hive. Learn more in [our docs](/resources/integrations/hive). ✨ **[OneDrive](/resources/integrations/onedrive) Integration!** You can now connect to your users' OneDrive accounts to manage their files. Paragon enables you to sync data between your app and your users’ OneDrive. For example, you can create files or manage files in OneDrive. Learn more in [our docs](/resources/integrations/onedrive). ✨ **[Dropbox Sign](/resources/integrations/dropboxsign) Integration!** You can now connect to your users' Dropbox Sign accounts to manage their files. Paragon enables you to sync data between your app and your users’ Dropbox Sign. For example, you can create files or manage files in Dropbox Sign. Learn more in [our docs](/resources/integrations/dropboxsign). ✨ **[Microsoft Excel](/resources/integrations/microsoftexcel) Integration!** You can now connect to your users' Microsoft Excel accounts to access, create, and update their spreadsheets. Paragon enables you to sync data between your app and your users’ Microsoft Excel. For example, you can create and update rows or sync row data from Microsoft Excel. Learn more in [our docs](/resources/integrations/microsoftexcel). ✨ **[LinkedIn](/resources/integrations/linkedin) Actions!** You can now access the following actions when building workflows for LinkedIn: * Get Profile by ID * Create Post ## 🐛 Bug Fixes * Fixes an issue where manually typed JSON would appear as a `string` instead of an `Object` in the Integration Request step. * Fixes an issue where manually typed boolean values would appear as a `string` instead of a `boolean` object. * Fixes a bug where the workflow settings sidebar would disappear after viewing the preview Connect Portal. * Fixes a bug where moving between the preview Connect Portal and the Workflow Editor causes the step reference display to appear with the UUID instead of the step index. * Fixes a bug where the Dynamic Variable Menu would unexpectedly close when used in filters. * Fixes a bug where you couldn't use Environment Secrets as parameters in Function steps. * Fixes an issue where some Request-triggered workflows would occasionally fail to send a response for some users. ## 🛠 Improvements * Exposes the API Base URL for Zoho CRM as a variable in the Dynamic Variable Menu. ## 🐛 Bug Fixes * Fixes issues when copying workflows between projects * Fixes an issue with the Salesforce `Search Records` action where Paragon may not paginate more than 2000 records. * Fixes an issue with the Salesforce `Search Records` step where users may see an error message when a search with filters returns no results. * Fixes an issue where User and Workflow Settings are not saving properly in the Connect Portal Preview. * Fixes an issue where Greenhouse would not allow you to select any users to use after connecting to your Greenhouse account in the Connect Portal. ## 🚀 New Features ✨ **[Mixpanel](/resources/integrations/mixpanel) Integration!** You can now connect to your users' Mixpanel accounts to manage their events, reports, and data. Paragon enables you to sync data between your app and your users’ Mixpanel. For example, you can send event or profile data or perform custom JQL Queries in Mixpanel. Learn more in [our docs](/resources/integrations/mixpanel). ✨ **Marketo Webhook Triggers!** You can now trigger Marketo workflows when a **Lead is added to a List**! ✨ **[OpenAI](/resources/integrations/openai) Integration!** You can now connect to your users' OpenAI accounts to perform completions and run queries. Paragon enables you to sync data between your app and your users’ OpenAI accounts. For example, you can create images or run queries in OpenAI. Learn more in [our docs](/resources/integrations/openai). ✨ **[WhatsApp](/resources/integrations/whatsapp) Integration!** You can now connect to your users' WhatsApp accounts to send and receive messages and notifications. Paragon enables you to sync data between your app and your users’ WhatsApp. For example, you can send messages or receive notifications when a message status changes in WhatsApp. Learn more in [our docs](/resources/integrations/whatsapp). ✨ **[Zendesk Sell](/resources/integrations/zendesksell) Integration!** You can now connect to your users' Zendesk Sell accounts to manage their opportunities, contacts, and leads. Paragon enables you to sync data between your app and your users’ Zendesk Sell. For example, you can create new records or manage existing records in Zendesk Sell. Learn more in [our docs](/resources/integrations/zendesksell). ✨ **[Snowflake](/resources/integrations/snowflake) Integration!** You can now connect to your users' Snowflake accounts to manage their records and data. Paragon enables you to sync data between your app and your users’ Snowflake accounts. For example, you can create new records or manage existing records in Snowflake. Learn more in [our docs](/resources/integrations/snowflake). ✨ **[PandaDoc](/resources/integrations/pandadoc) Actions!** You can now access the following actions when building workflows for PandaDoc: * Create a Document * Update a Document * Get a Document by ID * Delete Document * Send a Document * Search Documents ✨ **[Segment](/resources/integrations/segment) Integration!** You can now connect to your users' Segment accounts to manage their workspaces, sources, and destinations. Paragon enables you to sync data between your app and your users’ Segment. For example, you can create and maintain destination filters or configure warehouses and sources in Segment. Learn more in [our docs](/resources/integrations/segment). ✨ **[Facebook Pages](/resources/integrations/facebook-pages) Integration!** You can now connect to your users' Facebook Pages accounts to manage their pages, content, and messages. Paragon enables you to sync data between your app and your users’ Facebook Pages. For example, you can create content or manage messages in Facebook Pages. Learn more in [our docs](/resources/integrations/facebook-pages). ✨ **Single Sign-On (SSO) Support!** Paragon now supports Single Sign-On for companies on Enterprise installations! ✨ **[LinkedIn](/resources/integrations/linkedin) Integration!** You can now connect to your users' LinkedIn accounts to manage their posts and profiles. Paragon enables you to sync data between your app and your users’ LinkedIn. For example, you can share content or retrieve profiles in LinkedIn. Learn more in [our docs](/resources/integrations/linkedin). ✨ **[Mailchimp](/resources/integrations/mailchimp) Triggers!** You can now trigger Mailchimp workflows when people are added to lists in your users' Mailchimp accounts, making it easy to sync data in real-time between your users' Mailchimp and your app. Learn more in our docs. ## 🛠 Improvements * Adds support for the [`neo4j-driver`](https://www.npmjs.com/package/neo4j-driver) library in the Function step. * Adds an option to opt-out of recurring event updates for Google Calendar triggers. * Updates the API version for Facebook Ads from `v12` to `v14`. ## 🛠 Improvements * Improved general processing speeds by over 5x * Increased upper processing limit by over 20x * Adds the Social Media category to the Catalog. * Updates the Gong logo. * Adds pagination support to the Marketo Lists User Setting such that the dropdown displays all the lists available to the user in their account. * Adds the `refresh_token` scope as a default scope when setting up a Pardot integration. * Adds the `url` library to the Function step. ## 🚀 New Features ✨ **[PandaDoc](/resources/integrations/pandadoc) Integration!** You can now connect to your users' PandaDoc accounts to manage their documents, contacts, and templates. Paragon enables you to sync data between your app and your users’ PandaDoc. For example, you can send documents or manage agreements in PandaDoc. Learn more in [our docs](/resources/integrations/pandadoc). ✨ **[Gusto](/resources/integrations/gusto) Integration!** You can now connect to your users' Gusto accounts to manage their employees, payroll, and jobs. Paragon enables you to sync data between your app and your users’ Gusto. For example, you can update employee payroll or sync employee information in Gusto. Learn more in [our docs](/resources/integrations/gusto). ✨ **[WooCommerce](/resources/integrations/woocommerce) Actions!** You can now access the following actions when building workflows for WooCommerce: * Create Customer * Get Customer by ID * Search Customers * Update Customer * Delete Customer * Create Order * Get Order by ID * Search Orders * Update Order * Delete Order * Create Product * Get Product by ID * Search Products * Update Product * Delete Product ✨ **[Close](/resources/integrations/close) Integration!** You can now connect to your users' Close accounts to manage their opportunities, contacts, and leads. Paragon enables you to sync data between your app and your users’ Close. For example, you can create and update records or sync records in Close. Learn more in [our docs](/resources/integrations/close). ✨ **[DocuSign](/resources/integrations/docusign) Actions!** You can now access the following actions when building workflows for DocuSign: * Create an Envelope * Get Envelope by ID * Update Envelope * Send an Envelope * Search Envelopes * Envelope Custom Fields (CRUD) ✨ **[Greenhouse](/resources/integrations/greenhouse) Actions!** You can now access the following actions when building workflows for Greenhouse: * Create Application * Update Application * Get Application by ID * Delete Application * Create Candidate * Update Candidate * Get Candidate by ID * Delete Candidate * Create Job Opening * Update Job Opening * Get Job Opening by ID ✨ **[SAP S/4HANA](/resources/integrations/saps4hana) Actions!** You can now access the following actions when building workflows for SAP S/4HANA: * Create Supplier Invoice * Get Supplier Invoice by ID * Search Supplier Invoices * Delete Supplier Invoice * Get Supplier by ID * Search Suppliers * Update Supplier * Search Customer I guess you can say this release is *action-packed* 😏 ✨ **[Calendly](/resources/integrations/calendly) Triggers!** You can now trigger Calendly workflows when invitees are created or canceled in your users' Calendly accounts, making it easy to sync data in real-time between your users' Calendly and your app. Learn more in [our docs](/resources/integrations/calendly). ## 🐛 Bug Fixes * Fixes an issue with the copy for the `Insert Document` action for the Firebase integration in Paragon Automate * Fixes an issue where authentication tokens might not refresh for Microsoft Outlook workflows using the Microsoft Outlook Request step. ## 🚀 New Features ✨ **Twitter Integration!** You can now connect to your users' Twitter accounts to manage their datasets, dataflows, and reports. Paragon enables you to sync data between your app and your users’ Twitter account. For example, you can create tweets on behalf of your user or get a list of tweets by user or topic on Twitter. ✨ **[Power BI](/resources/integrations/powerbi) Integration!** You can now connect to your users' Power BI accounts to manage their content and perform admin operations. Paragon enables you to sync data between your app and your users’ Power BI. For example, you can embed Power BI content or perform admin operations in Power BI. Learn more in [our docs](/resources/integrations/powerbi). ✨ **[SAP SuccessFactors](/resources/integrations/sapsuccessfactors) Integration!** You can now connect to your users' SAP SuccessFactors accounts to manage their employees, time off, and benefits. Paragon enables you to sync data between your app and your users’ SAP SuccessFactors. For example, you can create employee time off requests or sync employee information in SAP SuccessFactors. Learn more in [our docs](/resources/integrations/sapsuccessfactors). ✨ **[Amazon S3](/resources/integrations/amazon-s3) Integration!** You can now connect to your users' Amazon S3 accounts to manage their buckets, objects, and jobs. Paragon enables you to sync data between your app and your users’ Amazon S3. For example, you can create publish or update metadata or run specific jobs and tasks in Amazon S3. Learn more in [our docs](/resources/integrations/amazon-s3). ✨ **[Tableau](/resources/integrations/tableau) Integration!** You can now connect to your users' Tableau accounts to manage their data sources, projects, and workbooks. Paragon enables you to sync data between your app and your users’ Tableau. For example, you can publish and update metadata or refresh the extract of a data source of a site in Tableau. Learn more in [our docs](/resources/integrations/tableau). ✨ **[Enable Workflows by Default](/connect-portal/connect-portal-customization)!** You can now default workflows to “enabled” without hiding the workflow from the Connect Portal! This is great for times when you want the functionality to be enabled by default and want to give your customer control over whether it stays enabled. Access these new settings in the **Connect Portal Configuration** menu. ✨ **[Lever](/resources/integrations/lever) Actions!** You can now access the following actions when building workflows for Lever: * Create an Opportunity * Get Opportunity by ID * Get Opportunities * Update Contact * Get Contact by ID * Create a Posting * Update Posting * Get Postings by ID * Get Postings ✨ **[Dropbox](/resources/integrations/dropbox) Actions!** You can now access the following actions when building workflows for Dropbox: * Get File by ID * Save File * List Files ✨ **[Magento](/resources/integrations/magento) Actions!** You can now access the following actions when building workflows for Magento: * Create Customer * Update Customer * Get Customer by ID * Search Customers * Delete Customer * Create Order * Update Order * Get Order by ID * Search Orders * Create Product * Update Product * Get Product by SKU * Search Products * Delete Product ## 🛠 Improvements * Updates to the description for the `Merge Fields` action for Mailchimp. * User metadata can now be accessed in the Workflow Editor if there is not an active connection in the Connect Portal Preview. * Adds support for European Mailgun accounts in Paragon Automate. * Task usage is now visible within the Paragon dashboard. * Adds a JSON input for attachments in Microsoft Teams. * Improvements to Pipedrive's token refreshing mechanism. ## 🐛 Bug Fixes * Fixes an issue where hidden workflows get enabled by default, even after being deleted. * Fixes an issue where calling `paragon.installIntegration()` may not dismiss the portal after a successful authentication for basic authentication. * Fixes an issue where sidebar inputs would not show the full list of options available from dropdowns in Paragon Automate. * Fixes an issue where failed workflow emails wouldn't include a direct link to workflow executions. * Fixes an issue where Google Sheets filters do not work for users in non-US locales. * Fixes an issue for `Enterprise` users where they are unable to remove the "Powered by Paragon" watermark from the Connect Portal. * Fixes an issue with timeouts when disconnecting Pipedrive integrations with Webhook-triggered workflows. * Fixes an issue where the field mapping input for Microsoft Dynamics 365 Sales would not include all entity types. * Fixes an issue where `&` characters were not correctly encoded when using the `Write SOQL` step for Salesforce. * Fixes an issue where successfully replayed workflows appear as `Errored` in Task History. * Fixes an issue where users are unable to switch between Paragon Connect and Paragon Automate while viewing Task History. ## 🚀 New Features ✨ **[Greenhouse](/resources/integrations/greenhouse) Integration!** You can now connect to your users' Greenhouse accounts to manage their candidates and jobs Paragon enables you to sync data between your app and your users’ Greenhouse. For example, you can sync candidates or manage jobs in Greenhouse. Learn more in [our docs](/resources/integrations/greenhouse). ✨ **[Zoho CRM](/resources/integrations/zohocrm) Actions!** You can now access the following actions when building workflows for Zoho CRM: * Create Record * Update Record * Get Record by ID * Search Records * Delete Record * Search Records by COQL Query ✨ **[Workflow Monitoring](/monitoring/event-destinations)!** We’re excited to announce that we’ve released new [Monitoring](/monitoring/event-destinations) capabilities for Paragon projects! **[Event Destinations](/monitoring/event-destinations)** allow you to send Workflow Failure events to your logging, analytics, or APM tools for further alerting or querying. We have templates for setting up [Slack](/monitoring/event-destinations/slack), [Datadog](/monitoring/event-destinations/datadog), [New Relic](/monitoring/event-destinations/new-relic), and [Sentry](/monitoring/event-destinations/sentry), but you can configure them to be sent to any other service over webhooks. Find it in your dashboard under **Settings > Monitoring** to get started. Learn more about workflow monitoring in our docs. ✨ **[BigQuery](/resources/integrations/bigquery) Integration!** You can now connect to your users' BigQuery accounts to manage their datasets, tables, and jobs. Paragon enables you to sync data between your app and your users’ BigQuery. For example, you can create and update datasets or perform job queries in BigQuery. Learn more in [our docs](/resources/integrations/bigquery). ✨ **[Calendly](/resources/integrations/calendly) Actions!** You can now access the following actions when building workflows for Calendly: * Get Event Type Details * Get Available Times for Event Type * Search Events * Get Event by ID * Get Event Invitees * Cancel Event ✨ **[Headless Connect Portal](/connect-portal/headless-connect-portal)!** Want to create your own integration page with the added benefits of Paragon's fully managed authentication? Now you can! The `paragon.installIntegration` method can be used to start the connection process for an integration without the Connect Portal appearing over your user interface. You can find the integrationType identifier you need in the Overview page for the integration. Learn more in [our docs](/apis/api-reference). ✨ **[Airtable](/resources/integrations/airtable) Integration!** You can now connect to your users' Airtable accounts to manage their tables and invites. Paragon enables you to sync data between your app and your users’ Airtable. For example, you can create invites or manage event types in Airtable. Learn more in [our docs](/resources/integrations/airtable). ✨ **[Lever](/resources/integrations/lever) Integration!** You can now connect to your users' Lever accounts to manage their events and invites. Paragon enables you to sync data between your app and your users’ Lever. For example, you can create invites or manage event types in Lever. Learn more in [our docs](/resources/integrations/lever). ✨ **[Metadata Properties](/apis/users) in the Workflow Editor!** You can now access metadata properties for your Connected Users within the Workflow Editor. For example, you can associate an API Key with your Connected User and use that specific API Key when authenticating requests back to your application. Open the Connect Portal Preview in the Workflow Editor and press "**Set User Metadata**" to get started! ✨ **[Linear](/resources/integrations/linear) Triggers!** You can now trigger Linear workflows when issues and labels are created or updated in your users' Linear accounts, making it easy to sync data in real-time between your users' Linear and your app. Learn more in [our docs](/resources/integrations/linear). * Issue Created * Issue Status Updated * Label Added or Removed from Issue * Issue Deleted ✨ **ServiceNow Actions!** You can now access the following actions when building workflows for ServiceNow: * Get Ticket by ID * Create Ticket * Update Ticket ✨ **[Calendly](/resources/integrations/calendly) Integration!** You can now connect to your users' Calendly accounts to manage their events and invites. Paragon enables you to sync data between your app and your users’ Calendly. For example, you can create invites or manage event types in Calendly. Learn more in [our docs](/resources/integrations/calendly). ✨ **[Freshdesk](/resources/integrations/freshdesk) Integration!** You can now connect to your users' Freshdesk accounts to manage records. Paragon enables you to sync data between your app and your users’ Freshdesk. For example, you can create new records or sync records between your app and Freshdesk. Learn more in [our docs](/resources/integrations/freshdesk). ## 🛠 Improvements * Adds Product and Component User Settings for Productboard. * Request triggers now support file-type payloads: Files can be uploaded directly into a workflow, with no changes required, using a Request trigger. This can be used for workflows that accept a file and forward it into file storage integrations like Google Drive and Dropbox. * Support for non-US accounts in Zoho CRM. ## 🐛 Bug Fixes * Fixes an issue where the integration metadata icon link for Monday.com was broken. * Fixes an issue where users were unable to select Assignee and Team name from the Preview Connect Portal for Asana. * Updates the logo for Freshdesk. * Fixes issues with Custom Object Mapping input clearing behavior. * Fixes an issue where users were unable to login to SAP S/4HANA from the Connect Portal. ## 🚀 New Features ✨ **[SAP S/4HANA](/resources/integrations/saps4hana) Integration!** You can now connect to your users' SAP S/4HANA accounts to manage their accounts payable, accounts receivable, and general ledger items. Paragon enables you to sync data between your app and your users’ SAP S/4HANA. For example, you can create and update invoices or manage customer or supplier details from SAP S/4HANA. Learn more in [our docs](/resources/integrations/saps4hana). ✨ **[Productboard](/resources/integrations/productboard) Actions!** You can now access the following actions when building workflows for Productboard: * Create Feature * Update Feature * Get Feature by ID * Delete Feature * Create Component * Update Component * Get Component by ID * Get Product by ID ✨ **[Dynamics 365 Finance](/resources/integrations/dynamics-finance) Actions!** One of our largest integrations yet! You can now connect to your users' Dynamics 365 Finance accounts to access, create, and update customers, payments, invoices, and more. Paragon enables you to sync data between your app and your users’ Dynamics 365 Finance. For example, you can create customers or sync invoices from Dynamics 365 Finance. Learn more in [our docs](/resources/integrations/dynamics-finance). * Get Accounts * Create Vendor * Update Vendor * Get Vendor by ID * Search for Vendor * Create Bill * Update Bill * Get Bill by ID * Search for Bill * Delete Bill * Create Bill Line Item * Update Bill Line Item * Get Bill Line Item by ID * Search for Bill Line Item * Delete Bill Line Item * Create Customer * Update Customer * Get Customer by ID * Search for Customer * Delete Customer * Create Invoice * Update Invoice * Get Invoice by ID * Search for Invoice * Delete Invoice * Create Payment Journal * Update Payment Journal * Get Payment Journal by ID * Search for Payment Journal * Delete Payment Journal * Create Payment Journal Line Item * Update Payment Journal Line Item * Get Payment Journal Line Item by ID * Search for Payment Journal Line Item * Delete Payment Journal Line Item ✨ **[Google Ads](/resources/integrations/googleads) Integration!** You can now connect to your users' Google Ads accounts to manage their ads, campaigns, and conversions. Paragon enables you to sync data between your app and your users’ Google Ads. For example, you can create and update ad creatives or manage ads and ad campaigns from Google Ads. Learn more in [our docs](/resources/integrations/googleads). ✨ **[Google Ad Manager](/resources/integrations/google-ad-manager) Integration!** You can now connect to your users' Google Ad Manager accounts to manage their ad inventory, orders, reports, and more. Paragon enables you to sync data between your app and your users’ Google Ad Manager. For example, you can create orders or sync ad inventory from Google Ad Manager. Learn more in [our docs](/resources/integrations/google-ad-manager). ✨ **[Zoho CRM](/resources/integrations/zohocrm) Integration!** You can now connect to your users' Zoho CRM accounts to manage their accounts, contacts, leads, and opportunities. Paragon enables you to sync data between your app and your users’ Zoho CRM. For example, you can create and update records or sync new records from Zoho CRM. Learn more in [our docs](/resources/integrations/zohocrm). ✨ **[Docusign](/resources/integrations/docusign) Integration!** You can now connect to your users' Docusign accounts to manage their signatures, agreements, and documents. Paragon enables you to sync data between your app and your users’ Docusign. For example, you can manage agreements or sync documents from Docusign. Learn more in [our docs](/resources/integrations/docusign). ✨ **[Connected Users Dashboard](/monitoring/users)!** The Connected Users Dashboard is your one-stop shop for viewing and managing the users connected to your integrations and the integrations they have enabled. For example, you can view which workflows your customers enable or disconnect integrations if they stop paying. Learn more in [our docs](/monitoring/users). ✨ **GitHub Integration!** You can now connect to your users' GitHub accounts to manage their issues, releases, and repositories. Paragon enables you to sync data between your app and your users’ GitHub. For example, you can create and sync issues or tag issues and automate creating comments in GitHub. Learn more in our docs. ✨ **Dynamic Timezone Selection for Schedulers!** You can now choose a timezone to run your Scheduler-triggered workflows. This is great for use cases where you want to send messages in your customer's morning or run a nightly sync at midnight. Learn more about Schedulers [here](/workflows/triggers). ✨ **[Dynamic Object Mapping](/connect-portal/field-mapping) for CRMs!** The day is finally here…you can now dynamically map objects between your app and your users' integration! Use a [Custom Object Mapping](/connect-portal/field-mapping) User Setting to allow your users to define a mapping between objects in your application and their integration. [Custom Object Mapping](/connect-portal/field-mapping) settings can be added by visiting the "Customize Connect Portal" screen from a supported integration in your project, under the User Settings section. Learn more in our docs. ## 🛠 Improvements * Improved the runtime for the Function step for on-premise environments. * You can now choose a team, status, and label for updates in Linear. * Adds the `Get Team by ID` action to Linear. * You can now send Slack messages as your authenticated user! Just enable the "Send as authenticated user" toggle to get started. * Enhances the token refresh mechanism for Microsoft Teams. * Adds support for filtering by custom fields to the `Record Updated` Salesforce webhook trigger. * Users will now see an `Invalid Credentials` message when trying to login to their ServiceNow accounts from the Connect Portal if the credentials are invalid. * Improves the experience of copying workflows between projects. * The Custom Object Mapping field inputs for Salesforce now show *all* fields available in the record schema, not only writeable ones. * Adds support for `File` types from responses. * Support for downloading files from request steps! Request and Integration Request steps will now download `File` objects in the Workflow Editor for all non-text payloads by default. This allows you to skip the Function step to convert the string into a `File` object when downloading images or PDF files from an API! * Adds support for Sandbox credentials for DocuSign. ## 🐛 Bug Fixes * Fixes an issue where new `Calls` show up as `Tasks` inside Salesforce. * Fixes an issue where issues could not be created in Jira for users with 50+ projects. * Fixes a bug where users could not get test data in the Workflow Editor when trying to create or update `Deals` in HubSpot. * Fixes a bug where hidden fields when searching for custom objects in HubSpot would not appear. * Fixes an issue where the integration domain base URL could not be used when making requests with the Paragon Proxy API. * Fixes an issue where the Project + Assignee combination User Setting for Jira would not display more than 100 results. * Fixes an issue in the Request and Integration Request steps where some responses would return `[object Object]` instead of the actual payload. * Fixes an issue where missing scopes for the Zoom integration would cause an `undefined` error after authenticating in the Connect Portal. * Fixes an issue where deleting and re-creating an environment secret would cause workflow validation to fail. * Fixes an issue where users were not able to make requests to `docs.google.com` from the Google Drive integration. ## 🚀 New Features ✨ **[Gong](/resources/integrations/gong) Actions!** You can now access the following actions when building workflows for Gong: * Add a new Call * Get Call by ID * Search for Call ✨ **[Dropbox](/resources/integrations/dropbox) Integration!** You can now connect to your users' Dropbox accounts to access, create, and update files. Paragon enables you to sync data between your app and your users’ Dropbox. For example, you can save files or sync files from Dropbox. Learn more in [our docs](/resources/integrations/dropbox). ✨ **[Productboard](/resources/integrations/productboard) Integration!** You can now connect to your users' Productboard accounts to manage their features, components, and releases. Paragon enables you to sync data between your app and your users’ Productboard. For example, you can automatically create and update releases or sync features and components from Productboard. Learn more in [our docs](/resources/integrations/productboard). ✨ **[Users API](/apis/users)!** The Users API allows you to query and modify the state of your Connected Users and their integrations. The API includes REST endpoints (and matching SDK functions) for identifying what integrations your user has enabled, disconnecting integrations, and disabling workflows. The API also allows your application to associate metadata with a Connected User. You can use the new [Users API](/apis/users) to: * Automatically disconnect integrations when a user deletes or downgrades their account in your application * Enrich your Connected Users' profile information with email, name, and other metadata * Associate Connected Users with an API key for your application, which can be used in workflows to send requests * Poll to check if a user has enabled a certain integration and view account connection status ✨ **[Magento](/resources/integrations/magento) Integration!** You can now connect to your users' Magento account to access, create, and update records in their Magento stores. Paragon enables you to sync data between your app and your users’ Magento. For example, you can create customers or sync orders from Magento. Learn more in [our docs](/resources/integrations/magento). ## 🐛 Bug Fixes * Fixes an issue in Google Calendar where leaving the calendar option blank would result in `Not Found` instead of using the default calendar for the connected user. * Fixes an issue where the Connect Portal would not show all items available in User Settings for assignees in Jira. * Fixes a bug where the icon for the Integration Enabled trigger went missing. * Fixes a bug where Google Calendar would request Google Drive scopes by default. * Fixes a regression for pagination support in Salesforce and Slack User Settings. * Fixes an issue where workflows hidden in the Connect Portal were not automatically enabled by default. * Fixes an issue where uploaded icons for the Custom Integration Builder would not automatically resize correctly. * Fixes an issue where the Connect Portal would not show all items available in User Settings with many items in Salesforce or Slack. ## 🛠 Improvements * You can now access important information, like workspace IDs, instance URLs, and team names within the Workflow Editor and Paragon SDK! These * Adds support to filter by List ID when searching Records in Salesforce. ## 🚀 New Features ✨ **[Gmail](/resources/integrations/gmail) Integration!** You can now connect to your users' Gmail accounts to manage their emails and drafts. Paragon enables you to sync data between your app and your users’ Gmail. For example, you can send emails and drafts or sync incoming emails from Gmail. Learn more in [our docs](/resources/integrations/gmail). ✨ **[Linear](/resources/integrations/linear) Actions!** You can now access the following actions when building workflows for Linear: * Create Issue * Update Issue * Get Issue by ID * Get Issue by Issue Identifier * Search Issues * Delete Issue * Archive Issue * Create Sub-Issue * Create Project * Update Project * Get Project by ID * Delete Project ✨ **[Gmail](/resources/integrations/gmail) Actions!** You can now access the following actions when building workflows for Gmail: * Send Email * Get Email by ID * Search for Email * Delete Email * Create a Contact * Get Contact by Resource Name * Search for Contact * Delete Contact ✨ **[BambooHR](/resources/integrations/bamboohr) Integration!** You can now connect to your users' BambooHR accounts to manage their employees, time off, and benefits. Paragon enables you to sync data between your app and your users’ BambooHR. For example, you can create time off requests or sync employee information from BambooHR. Learn more in [our docs](/resources/integrations/bamboohr). ## 🛠 Improvements * You can now search for permissions by keyword, like `events`, instead of searching for the full permission in your Integration Settings. * Removes the deprecated `contacts` scope from HubSpot in favor of `crm.objects.contacts.read` and `crm.objects.contacts.write`. ## 🐛 Bug Fixes * Fixes an issue where calling `paragon.authenticate()` with no integrations in your account would result in a `500` error. * Fixes an issue where the Environment Secrets Manager wouldn’t refresh correctly after switching between projects. * Fixes an issue where shared User Settings changes do not update workflow deployments. * Fixes an issue with the token refreshing mechanism for Google Campaign Manager and Google Calendar. * Fixes an issue with the token refresh mechanism for NetSuite. * Fixes an issue where the Record ID was not available when updating `Engagements` in HubSpot. * Fixes an issue where some executions may result in `socket hang up` errors. * Fixes an issue where Google credentials may become invalid for integrations in Paragon Automate. * Fixes a bug where users could create multiple App Events with the same name. * Fixes an issue where required Boolean User Settings could not be set to `false` without disabling the rest of the Connect Portal's options. ## 🚀 New Features ✨ **[NetSuite](/resources/integrations/netsuite) Actions!** You can now access the following actions when building workflows for NetSuite: * Create Vendor * Update Vendor * Get Vendor by ID * Search Vendors * Delete Vendor * Create Bill * Update Bill * Get Bill by ID * Search Bills * Delete Bill * Create Account * Update Account * Get Account by ID * Search Accounts * Delete Account * Create Tax Group * Update Tax Group * Get Tax Group by ID * Delete Tax Group * Search Payment Terms * Get Payment Term by ID ✨ **[Gong](/resources/integrations/gong) Integration!** You can now connect to your users' Gong accounts to manage their call data. Paragon enables you to sync data between your app and your users’ Gong. For example, you can add and sync calls from Gong. Learn more in [our docs](/resources/integrations/gong). ✨ **[Sage Accounting](/resources/integrations/sage-accounting) Integration!** You can now connect to your users' Sage Accounting accounts to manage their payments and invoices. Paragon enables you to sync data between your app and your users’ Sage Accounting. For example, you can create and manage payments or sync invoices from Sage Accounting. Learn more in [our docs](/resources/integrations/sage-accounting). ✨ **[Dynamics 365 Business Central](/resources/integrations/dynamicsbusinesscentral) Actions!** You can now access the following actions when building workflows for Dynamics 365 Business Central: * Search for Vendor * Create Purchase Invoice * Update Purchase Invoice * Post a Purchase Invoice * Get a Purchase Invoice by ID * Search for Purchase Invoice * Delete Purchase Invoice * Create Purchase Invoice Line Item * Update Purchase Invoice Line Item * Get Purchase Invoice Lines * Get Purchase Invoice Line Item by ID * Search for Purchase Invoice Line Item * Delete Purchase Invoice Line Item * Get Accounts * Search for Tax Group * Create Payment Term * Update Payment Term * Search for Payment Term * Delete Payment Term ✨ **[iManage](/resources/integrations/imanage) Integration!** You can now connect to your users' iManage accounts to manage their files. Paragon enables you to sync data between your app and your users’ iManage. For example, you can create and manage documents or sync files from iManage. Learn more in [our docs](/resources/integrations/imanage). ## 🐛 Bug Fixes * Fixes an issue where replaying a workflow would only show the actions for previously successful steps. * Fixes an issue where the billing dashboard would not display payment information. * Fixes an issue where users were not able to sign into production Pardot accounts. * Fixes an issue with the token refreshing mechanism for Xero. * Fixes an issue where copying workflows between projects breaks step references. * Fixes an update where users were not able to update cells to `null` in Google Sheets. * Fixes an issue where the Jira Issue Status input does not use the correct ID as the value. * Fixes an issue where users were not able to sign into QuickBooks Sandbox accounts. * Fixes an issue where deploying multiple custom fields in a row for Salesforce would result in slow action times. ## 🛠 Improvements * You can now copy the entire `paragon.event()` call when copying App Events from the App Event dashboard. * You can now filter Asana projects by Workspace in User Settings. * Google integrations now support Sign-in with Google. * Adds support to filter by List ID when searching Records in HubSpot. * Adds support for Get Abandoned Carts in Shopify. * Adds support for native integration icons in on-prem environments. ## 🚀 New Features ✨ **[NetSuite](/resources/integrations/netsuite) Integration!** You can now connect to your users' NetSuite ERP system to manage their vendors and purchase orders. Paragon enables you to sync data between your app and your users’ NetSuite. For example, you can create and manage vendors or sync purchase orders from NetSuite. Learn more in [our docs](/resources/integrations/netsuite). ✨ **Redesigned [Environment Secrets](/workflows/environment-secrets) Manager!** Environment Secrets can now be updated and revealed by `Admin` users! Updated environment secrets will automatically be used in future workflow executions. ✨ **[Sage Intacct](/resources/integrations/sage-intacct) Integration!** You can now connect to your users' Sage Intacct account to manage their accounts payable, vendors, and purchase orders. Paragon enables you to sync data between your app and your users’ Sage Intacct. For example, you can create and manage vendors or sync purchase orders from Sage Intacct. Learn more in [our docs](/resources/integrations/sage-intacct). ✨ **[Pipedrive](/resources/integrations/pipedrive) Actions!** You can now access the following actions when building workflows for Pipedrive: * Create Record * Update Record * Get Record by ID * Get Records * Delete Record ✨ **[Dynamics 365 Finance](/resources/integrations/dynamics-finance) Integration!** You can now connect to your users' Dynamics 365 Finance account to manage their customers, payments, invoices, and more. Paragon enables you to sync data between your app and your users’ Dynamics 365 Finance. For example, you can create and manage payments or sync invoices from Dynamics 365 Finance. Learn more in [our docs](/resources/integrations/dynamics-finance). ✨ **[Record Deleted](/resources/integrations/salesforce) Salesforce Trigger!** You can now trigger Connect workflows when records are deleted in your users' Salesforce, making it easy to sync data in real-time between your users' Salesforce and your app. Learn more in [our docs](/resources/integrations/salesforce). ✨ **[Dynamics 365 Business Central](/resources/integrations/dynamicsbusinesscentral) Integration!** You can now connect to your users' Dynamics 365 Business Central accounts to manage their accounts payable, vendors, and purchase orders. Paragon enables you to sync data between your app and your users’ Dynamics 365 Business Central. For example, you can create and manage vendors or sync purchase orders from Dynamics 365 Business Central. Learn more in [our docs](/resources/integrations/dynamicsbusinesscentral). ✨ **[Linear](/resources/integrations/linear) Integration!** You can now connect to your users' Linear accounts to manage their software projects, sprints, and tasks. Paragon enables you to sync data between your app and your users’ Linear. For example, you can create and manage tasks or sync sprints from Linear. Learn more in [our docs](/resources/integrations/linear). ✨ **[Woocommerce](/resources/integrations/woocommerce) Integration!** You can now connect to your users' Woocommerce accounts to manage their customers, products, and orders. Paragon enables you to sync data between your app and your users’ Woocommerce. For example, you can create and manage customers or sync purchase orders from Woocommerce. Learn more in [our docs](/resources/integrations/woocommerce). ## 🛠 Improvements * Paragon sends a `404` status code when trying to trigger a workflow with the Request trigger that isn't deployed. * Added support for dynamic variable menu inputs to the Delay step. * You can now quickly make changes to the App Event your workflow uses right from the Workflow Editor. * Added support for `Get User by Email` in Slack. * Added support for the full payload in Trello's `Comment Created` trigger. * Added support for `Contact Lead Status` in HubSpot. * You can copy App Events easily with the copy button to the code preview. * When deleting environment secrets from Paragon, the Environment Secrets Manager informs you which other workflows it appears in and may need to be reconfigured. ## 🐛 Bug Fixes * Fixed an issue where User Settings with a search bar were not searchable if they had a tooltip enabled. * Fixed an issue where the Function step could not display more than 20 variables. * Fixed an issue where `Members` would not have access to the same account plan as `Admins`. * Resolved issues with the token refresh mechanism for Zoom. * Resolved issues with the token refresh mechanism for Facebook Ads. * Fixed a bug where dynamic variables in filters for workflow actions would resolve as `undefined`. * Fixed a bug where users were unable to filter accounts from Outreach by `name`. * Fixed an issue where new users accepting team invites were not automatically redirected to their Paragon account. * Fixed an issue where users were unable to authenticate into Mailchimp, resulting in a `500` error. * Fixed an issue where SDK authorizations in quick succession could result in duplicate Connected Users. * Fixes an issue where the Function step editor did not resize properly. * Fixes a bug where specifying the issue type when trying to create an issue in Jira would fail for accounts with multiple projects. * Fixes an issue where a user's name would hyperlinked in the welcome email. * Fixes an issue where `0` or `null` values show up as empty instead of their literal values in databases. * Fixes an issue for Jira where errors that occur in triggers do not update refresh token values. * Fixes a bug where users were unable to get account data in Sage Intacct. ## 🚀 New Features ✨ **[Pipedrive](/resources/integrations/pipedrive) Integration!** You can now connect to your users' Pipedrive account to manage their records and contacts. Paragon enables you to sync data between your app and your users’ Pipedrive. For example, you can create and manage records in Pipedrive or sync contacts from Pipedrive. Learn more in [our docs](/resources/integrations/pipedrive). ✨ **[Oracle Eloqua](/resources/integrations/eloqua) Actions!** You can now access the following actions when building workflows for Oracle Eloqua: * Create Campaign * Update Campaign * Active Campaign * Search Campaigns * Get Campaign by ID * Create Email * Update Email * Search Emails * Send Email Deployment * Create Contact * Update Contact * Search Contacts ✨ **[Microsoft Outlook](/resources/integrations/outlook) Triggers!** You can now trigger Connect workflows when events are created or updated in your users' Microsoft Outlook, making it easy to sync data in real-time between your users' Microsoft Outlook and your app. Learn more in [our docs](/resources/integrations/outlook). ✨ **Comment Created Trigger!** You can now trigger Connect workflows when comments are created in your users' Asana, Jira, and Trello accounts! ## 🛠 Improvements * `Comment Created` triggers have been added for Asana, Jira, and Trello. * Added support for uploading different file types through the Connect SDK and API. * Connect Proxy responses can now receive binary-encoded/raw responses. * We've added an integration indicator for `Added` and `API` integrations. * You can now manage integration settings from the Integration Catalog. ## 🐛 Bug Fixes * Fixed a bug where the Function step wouldn't load for users with on-premise installations. * Fixed an issue where `providerData` would be missing from the Connect User object after an OAuth callback. * Fixed an issue where large Fan Outs would work intermittently. ## 🚀 New Features ✨ **[Oracle Eloqua](/resources/integrations/eloqua) Integration!** You can now connect to your users' Oracle Eloqua account to manage their campaigns and contacts. Paragon enables you to sync data between your app and your users’ Oracle Eloqua account.For example, you can create and manage campaigns in Oracle Eloqua or sync contacts from Oracle Eloqua. Learn more in [our docs](/resources/integrations/eloqua). ✨ **[ServiceNow](/resources/integrations/servicenow) Integration!** You can now connect to your users’ ServiceNow accounts to create, access, and update records in their ServiceNow account. Paragon enables you to sync data between your app and your users’ ServiceNow account. For example, you can create or update records in your users’ ServiceNow account or sync records from your users’ ServiceNow account. You can also receive webhooks when records are created or updated in your users’ ServiceNow account. Learn more in [our docs](/resources/integrations/servicenow). ✨ **[QuickBooks](/resources/integrations/quickbooks) Triggers!** You can now trigger Connect workflows when Accounts, Customers, and Invoices are created in your users' QuickBooks accounts, making it easy to sync data in real-time between your users' QuickBooks and your app. Learn more in [our docs](/resources/integrations/quickbooks). ✨ **[Microsoft Outlook](/resources/integrations/outlook) Integration!** You can now connect to your users' Microsoft Outlook account to manage their events and send messages. Paragon enables you to sync data between your app and your users’ Microsoft Outlook account. For example, you can create and manage events in Microsoft Outlook or sync messages from Microsoft Outlook. Learn more in [our docs](/resources/integrations/outlook). ✨ **[Google Analytics](/resources/integrations/google-analytics) Integration!** You can now integrate your Google Analytics application to get real-time data and run reports in Google Analytics! This integration also supports OAuth, allowing you to connect with your users' Google Analytics accounts and integrate them with your workflows. Check out [our docs](/resources/integrations/google-analytics) to get started! ✨ **[Google Calendar](/resources/integrations/google-calendar) Triggers!** You can now trigger Connect workflows when events are created or updated in your users' Google Calendar, making it easy to sync data in real-time between your users' Google Calendar and your app. Learn more in [our docs](/resources/integrations/google-calendar). ## 🐛 Bug Fixes * Fixed a bug where error messages wouldn’t be sent back if you enabled “Continue workflow if request fails” for an Integration Request step. * Fixed an issue where tokenized strings representing objects were not sent as objects from Request step JSON bodies. * Fixed an issue where users would sometimes see a `Too many concurrent calls` error from the Function step. * Fixed an issue where the "Create or Update Lead" action in the Marketo integration would overwrite lead data with blanks if users chose to update a lead. * Fixed an issue where duplicate Salesforce entries may appear when searching over long lists. ## 🛠 Improvements * Added support for API Key validation for Klaviyo. * Added support for query parameters in Authorization URL when using the Custom Integration Builder. * Improved stability when switching between different Paragon projects. ## 🚀 New Features ✨ **[Google Search Console](/resources/integrations/google-search-console) Integration!** You can now integrate your Google Search Console application to run queries on their Google Search results data! This integration also supports OAuth, allowing you to connect with your users' Google Search Console accounts and integrate them with your workflows. Check out [our docs](/resources/integrations/google-search-console) to get started! ✨ **[Monday.com](/resources/integrations/monday) Integration!** You can now integrate your Monday.com application to create, update, and manage Items in Monday.com! This integration also supports OAuth, allowing you to connect with your users' Monday.com accounts and integrate them with your workflows. Check out [our docs](/resources/integrations/monday) to get started! ✨ **[Shopify](/resources/integrations/shopify) Triggers!** You can now trigger Connect workflows when Orders, Customers, or Products, are created or updated in your users' Shopify account, making it easy to sync data in real-time between your users' Shopify and your app. Learn more in [our docs](/resources/integrations/shopify). ✨ **[Monday.com](/resources/integrations/monday) Triggers!** You can now trigger Connect workflows when Items are created or updated in your users' Monday.com accounts, making it easy to sync data in real-time between your users' Monday.com and your app. Learn more in [our docs](/resources/integrations/monday). ✨ **[ClickUp](/resources/integrations/clickup) Integration!** You can now integrate your ClickUp application to create, update, and manage Tasks in ClickUp! This integration also supports OAuth, allowing you to connect with your users' ClickUp accounts and integrate them with your workflows. Check out [our docs](/resources/integrations/clickup) to get started! ✨ **[ClickUp](/resources/integrations/clickup) Triggers!** You can now trigger Connect workflows when tasks are created or updated in your users' ClickUp account, making it easy to sync data in real-time between your users' ClickUp and your app. Learn more in [our docs](/resources/integrations/clickup). ✨ **[SharePoint](/resources/integrations/sharepoint) Integration!** You can now integrate your SharePoint application to create, update, and manage sites and lists in SharePoint! This integration also supports OAuth, allowing you to connect with your users' SharePoint accounts and integrate them with your workflows. Check out [our docs](/resources/integrations/sharepoint) to get started! ✨ **[OAuth Client Credentials](/resources/custom-integrations) Authentication Support!** Specify the URL that this integration uses to exchange an authorization code for access tokens, also known as the **Access Token URL**. The Paragon Connect Portal prompt your user for their Client ID and Client Secret needed to validate the authentication. ## 🛠 Improvements * Added line numbers to error messages from the Function step to help debug them. ## 🐛 Bug Fixes * Fixed an issue where direct URLs to different Paragon projects would not load properly. * Fixed a bug where switching between projects wouldn't properly refresh the data in the dashboard. * Fixed an issue where the ClickUp Request step didn't use the correct URL. * Fixed an issue where users were unable to select password from the dynamic variable menu for Basic auth in the Request step. * Fixed an issue where environment secrets didn't properly resolve when sent through a Request step. ## 🚀 New Features ✨ **Request Triggers!** You can now trigger workflows for your customers using HTTP Requests! This means you can now trigger workflows and send custom responses to your app. **✨[Trello](/resources/integrations/trello) Integration!** You can now integrate your Trello application to create, update, and manage Cards and Lists in Trello! This integration also supports OAuth, allowing you to connect with your users' Trello accounts and integrate them with your workflows. Check out [our docs](/resources/integrations/trello) to get started! **✨[Oracle Financials Cloud](/resources/integrations/oracle-financials-cloud) Integration!** You can now integrate your Oracle Financials Cloud application to create, update, and manage Invoices in Oracle Financials Cloud! This integration also supports OAuth, allowing you to connect with your users' Oracle Financials Cloud accounts and integrate them with your workflows. Check out [our docs](/resources/integrations/oracle-financials-cloud) to get started! **✨[Azure DevOps](/resources/integrations/azure-devops) Integration!** You can now integrate your Azure DevOps application to create, update, and manage Work Items in Azure DevOps! This integration also supports OAuth, allowing you to connect with your users' Azure DevOps accounts and integrate them with your workflows. Check out [our docs](/resources/integrations/azure-devops) to get started! ✨**Global User Settings!** You can now share workflow settings across different workflows. **✨[Trello](/resources/integrations/trello) Triggers!** You can now trigger Connect workflows when Cards are created or updated in your users' Trello account, making it easy to sync data in real-time between your users' Trello and your app. Learn more in [our docs](/resources/integrations/trello). ## 🐛 Bug Fixes * Fixed copy issues * Fixed an issue where failed workflow emails were not sent. * Fixed an issue in the Workflow Editor where steps would incorrectly duplicate when moving them upstream. * Fixed an issue where users were unable to filter Outreach using `Before` or `After` time filters. * Fixed an issue where the users could not select data from the dynamic variable menu in Paragon Automate. * Fixed an issue where users were unable to access `/v1/` of Klaivyo’s API. * Fixed an edge case where your users may quickly subscribe to a workflow then close the Connect Portal, which previously prevented the `onWorkflowChange` event from reaching your application. * Fixed some copy issues in the Integration Dashboard. * Fixed an issue for Enterprise customers where the number of connected users allowed was incorrectly set to `0`. * Fixed an issue where users could not add additional fields from the Dynamic Variable Menu when specifying any object directly to the "Additional Fields" input of the `Create Record` action in the Salesforce integration. ## 🛠 Improvements * Added an item to the Workflow Editor context menu called “Edit Connect Portal Workflow Settings” which takes you directly to the Workflow Settings part of the “Customize Connect Portal” page, for this workflow, allowing you to customize the settings for this workflow. * Added `aws-sdk` to the list of supported JavaScript libraries. * When creating App Events from the Workflow Editor, the App Event is now automatically selected. * You can now access your customer's base URL for Salesforce by calling `paragon.getUser()` * Added Profile ID support to the Connect Portal authorization flow for Google Campaign Manager 360. * Added support for the `cloudflare` npm library in the Function step. * You can now load the Paragon Connect SDK in an iframe or when using `localhost`! ## 🐛 Bug Fixes * Fixed an issue where headers supplied to the step input for Integration Request steps were not being sent in the outgoing HTTP request. * Fixed an issue where users could only add property labels to User Settings in Salesforce one letter at a time. * Fixed an issue where Workflows with an empty App Event selection were not able to be deleted. * Fixed an error in the Salesforce Connect API sample code. * Fixed a bug where clicking "What's New?" would not open the changelog. * Fixed an issue where filtering on the `Name` property when getting customers in Xero consistently failed if the comparison value contained `&`. * Fixed an issue where Salesforce and Zendesk `Record Updated` triggers may not fire as expected. * Fixed an issue in the Workflow Builder preventing large workflows from deploying successfully. * Fixed an issue where input values would get erased if the page refreshed while typing the input. * Fixed an issue in Paragon Automate where Tasks Usage would always show as `0`. * Fixed an issue where custom Google-based integrations would not refresh tokens properly. * Fixed an issue where some accounts on Pro or Enterprise plans were not able to see their Task History properly. ## 🛠 Improvements * The Create Record and Update Record actions for HubSpot now include a JSON input for **Additional Fields**, in the case that you want to specify the inclusion of custom properties in the create/update payloads. * Links in Connect Portal descriptions for your integrations now open in new tabs. * Added a new type of input to Connect Portal Workflow Settings for Jira that allows your users to select an issue field type. * Added an “Additional Fields” JSON input to Jira that allows you to specify fields that aren’t represented in the UI as JSON. * Users won't be subscribed to workflows until all required fields are filled out. * Added support for `Text Area (Rich)` field type when deploying custom objects on Salesforce. * You can now view integration metadata from the Connect API and SDK! This includes the integration's name, icon, and brand color. ## 🚀 New Features **✨[Asana](/resources/integrations/asana) Triggers!** You can now trigger Connect workflows when projects or tasks are created or updated in your users' Asana account, making it easy to sync data in real-time between your users' Asana and your app. Learn more in [our docs](/resources/integrations/asana). **✨[Facebook Ads](/resources/integrations/facebook-ads) Integration!** You can now integrate your Facebook Ads application to create, update, and manage Campaigns and Lists in Facebook Ads! This integration also supports OAuth, allowing you to connect with your users' Facebook Ads accounts and integrate them with your workflows. Check out [our docs](/resources/integrations/facebook-ads) to get started! ✨**Integration Icons in the Connect API and SDK!** You can now find integration icons and brand names inside the Connect API and SDK. **✨[Mailchimp](/resources/integrations/mailchimp) Integration!** You can now integrate your Mailchimp application to create, update, and manage Campaigns and Lists in Mailchimp! This integration also supports OAuth, allowing you to connect with your users' Mailchimp accounts and integrate them with your workflows. Check out [our docs](/resources/integrations/mailchimp) to get started! ✨ **HubSpot [Custom Objects and Fields](/resources/integrations/hubspot)!** Our HubSpot integration now allows your users to choose their own custom object and field mapping in the Connect Portal, so you can sync data from your app to any objects or fields in your users' HubSpot instance. You can also deploy your own custom objects and fields to your users' HubSpot instance. Learn more in [our docs](/resources/integrations/hubspot). ## 🚀 New Features ✨**Free-form Scope Support!** We've redesigned the scope inputs in your integration's dashboard to allow you to add *any* scope. ✨**Multiple Project Support** You can now create multiple Paragon environments for your dev, staging, and production environments inside of Paragon! 🎉 Each one has its own workflows and authentication methods so you can test out new changes before going live to your customers. You can get started by checking out the Projects tab in the dropdown menu! ✨**Enhanced Authentication** If you use a third-party provider for user authentication, like Auth0 or Firebase, you can now it within Paragon! Just go to **Settings > User Authentication** to get started. ✨**Outreach Triggers!** You can now trigger Connect workflows when records are created or updated in your users' Outreach CRM, making it easy to sync data in real-time between your users' Outreach and your app. Learn more in [our docs](/resources/integrations/outreach). ✨**HubSpot Contact Deleted Trigger!** You can now trigger workflows to run when records are deleted in your user's HubSpot account! ✨**Boolean User Setting!** You can now allow your users to select a `true` / `false` statement from the Connect Portal! [Customize your Connect Portal](/connect-portal/connect-portal-customization) to get started. ## New ## 🛠 Improvements * You can now use dynamic variables when referencing phone numbers in Twilio. * You can now filter records when creating New Records and Record Updated triggers in Salesforce. * Optimized the Connect Portal layout on devices with smaller screens. * URLs in the Connect Portal are now automatically hyperlinked. * Migrated our Jira application to use rotating refresh tokens. * You can now include tooltips for each and any of the inputs in the workflow settings of your Connect Portal. ## 🐛 Bug Fixes * Fixed a UI bug when viewing previous workflow versions in Version History where navigation buttons get shifted to the left. * Fixed a UI bug when using the Salesforce Object Mapper to display a list of Salesforce Objects. * Fixed an inconsistency between Asana Connect Proxy API and Asana Request step. * Fixed a bug with Custom Integrations that prevents the interpolation of variables into the API Base URL. * Fixed a bug where the integration icon would not appear for Integration-Enabled triggers for Custom Integrations. * Fixed an issue where users couldn't change the icon for a custom integration after it was initially configured. * Fixed a bug where testing workflows or sending App Events may not fire properly. * Fixed a bug where the Workflow Editor would prompt users to enable their integration in the Connect Portal preview after already doing so. * Fixed an issue where the Contact Properties User Setting for HubSpot would not save the user's input. * Fixed an issue for Outreach where default scopes would always be used instead of credential-defined scopes. ## 🚀 New Features **✨[Google Campaign Manager 360](/resources/integrations/google-campaign-manager-360) Integration!** You can now integrate your Google Campaign Manager 360 application to create, update, and manage ads and campaigns in Google Campaign Manager 360! This integration also supports OAuth, allowing you to connect with your users' Google Campaign Manager 360 accounts and integrate them with your workflows. Check out [our docs](/resources/integrations/google-campaign-manager-360) to get started! ✨**Salesforce Campaign Triggers!** You can now trigger Paragon Connect workflows when Opportunities or Members are added your users' Salesforce Campaigns, making it easy to sync data in real-time between your users' CRM and your app. Learn more in [our docs](/resources/integrations/salesforce). ## 🛠 Improvements * Inactive custom integrations now appear at the top of the Integrations dashboard. * When an App Event is deleted, all related workflows will become undeployed. * Removed the required validation for scopes when creating your own integrations. This means you can now build integrations with services that do not provide a list of scopes. * Added a `Custom` tag next to custom integrations in the Integration Dashboard * Long base URLS in the Custom Integration Request step are now visually truncated. * You can now specify the Reference field when creating invoices in Xero. * Added access to the `crm.object.owners.read` scope in HubSpot. * Added access to the `accounting.reports.read` scope in Xero. ## 🐛 Bug Fixes * Fixed an issue where using the integration name as a query parameter would result in the query not being recognized in the Paragon SDK or Paragon Proxy API. * Fixed an issue where creating meetings in Zoom would use the current timestamp instead of a supplied one. * Fixed an issue where the number of connected workflows to an App Event could be incorrect. Fixed an issue where users couldn't update rows in Google Sheets if their worksheet contained more than 26 columns. * Fixed an issue where deleting an integration wouldn't delete associated workflows and credentials. * Fixed an issue where custom integrations would not show up in the Paragon SDK. * The workflow name is no longer automatically highlighted when opening workflows in the Workflow Builder. * Fixed missing Field Inputs for the `Note` object in Salesforce Custom Objects. * Fixed an issue in Paragon Automate where the Integrations Manager would crash if the user didn't have any integrations connected. * Fixed an issue where the Workflow Builder would crash when trying to reference a trigger variable from the Delay step. * Fixed an issue where the page wouldn’t scroll if your cursor was above an input in the Workflow Builder. * Fixed an issue where some users were not able to add Meeting Registrants to Zoom when testing Zoom steps in the Workflow Builder. * Fixed an issue where the "Continue workflow if step fails" toggle wouldn't work on custom integration requests. * Fixed an issue in the Paragon Connect SDK where custom integrations would show up as `custom` instead of `custom.name` when calling `paragon.getUser()`. ## New **✨[Outreach](/resources/integrations/outreach) Integration!** You can now integrate your Outreach application to create, update, and manage contacts and opportunities in Outreach! This integration also supports OAuth, allowing you to connect with your users' Outreach accounts and integrate them with your workflows. Check out [our docs](/resources/integrations/outreach) to get started! ## 🚀 New Features ✨**Salesforce Pardot Triggers!** You can now trigger Connect workflows when members or prospects are created in your users' Salesforce Pardot account, making it easy to sync data in real-time between your users' Salesforce Pardot and your app. Learn more in [our docs](/resources/integrations/pardot). ✨**Integration Requests!** Don't see an action you need for an integration? Try using our Integration Request step! This step allows you to make API requests to your integration provider from the Workflow Builder. This is especially useful when you need access to an action we don't yet support. It works similarly to the API Request step: just input the API endpoint, fill out any parameters, and you're good to go! Paragon Connect takes care of the authentication so you don't have to 😉 ✨**HubSpot Engagements!** You can now create the following engagements for HubSpot in the Workflow Builder: * Email * Task * Call * Meeting * Note ✨**Jira Triggers!** You can now trigger Connect workflows when issues are created or updated in your users' Jira account, making it easy to sync data in real-time between your users' Jira and your app. Learn more in our docs. **✨[Microsoft Dynamics 365](/resources/integrations/microsoft-dynamics-365) Integration!** You can now integrate your Microsoft Dynamics 365 application to create, update, and manage recrods in Microsoft Dynamics 365! This integration also supports OAuth, allowing you to connect with your users' Microsoft Dynamics 365 accounts and integrate them with your workflows. Check out [our docs](/resources/integrations/microsoft-dynamics-365) to get started! ## 🛠 Improvements * You can now choose the following scopes within the HubSpot integration: * `crm.objects.companies.read` * `crm.objects.companies.write` * `crm.objects.deals.read` * `crm.objects.deals.write` * `crm.lists.read` * `crm.lists.write` * You can now access your user's `providerId` within the Workflow Builder. This feature was previously exclusive to the Paragon Connect SDK. * Added support for `Phone` types for Xero contacts. * Added support for `AccountCode` when creating or updating invoices in Xero. ## 🐛 Bug Fixes * Updated Asana's description in the Workflow Builder. * Fixed an issue where users were unable to send a `DELETE` request without sending an empty `body` to Stripe through the Connect Proxy API. ## 🚀 New Features **✨[Zoom](/resources/integrations/zoom) Triggers!** You can now trigger Connect workflows when meetings are created or updated in your users' Zoom account, making it easy to sync data in real-time between your users' Zoom and your app. Learn more in our docs. **✨[Xero](/resources/integrations/xero) Triggers!** You can now trigger Connect workflows when new accounts, customers, or invoices, are created in your users' Xero account, making it easy to sync data in real-time between your users' Xero and your app. Learn more in our docs. **✨[Xero](/resources/integrations/xero) Integration!** You can now integrate your Xero application to create, update, and manage invoices in Xero! This integration also supports OAuth, allowing you to connect with your users' Xero accounts and integrate them with your workflows. Check out [our docs](/resources/integrations/xero) to get started! **✨[Pardot](/resources/integrations/pardot) Integration!** You can now integrate your Pardot application to create, update, and manage prospects in Pardot! This integration also supports OAuth, allowing you to connect with your users' Pardot accounts and integrate them with your workflows. Check out [our docs](/resources/integrations/pardot) to get started! **✨[Custom Integrations!](/resources/custom-integrations)** Custom Integrations allow you to build your own custom integration with any app provider on Paragon, even if it's not natively supported by our integration catalog. Similar to natively supported integration on Paragon, Custom Integrations provide the following features: * **Embedded Connect Portal** for your customers to activate and configure the integration in your app. * **Fully managed authentication** with OAuth 2.0 or API Keys. * **Visual workflow editor** for creating custom integration logic. * **Access to any API methods** provided by the application's API. Custom Integrations are included in the **Pro Plan** and above. **[Contact us](https://calendly.com/useparagon/demo)** to schedule a demo of Custom Integrations or upgrade your account. ## 🛠 Improvements * It's now easier to add User Settings when configuring the Connect Portal. * The icon for invalid workflow steps has been updated * Added `fast-xml-parser` npm module to the Function editor. ## 🐛 Bug Fixes * Fixed an issue where the code samples for Slack were incorrect. * Fixed an issue where switching from Connect to Automate incorrectly redirects to the Integrations Catalog. * Fixed a bug where clicking the background in the Connect Portal Preview causes the Portal to disappear. * Fixed an issue where Line Items in Xero would not accept a tokenized array. * Fixed an issue where users could not make API requests to Microsoft Teams through the Connect Proxy API. * Fixed an issue where dropdown icons in the Connect Portal wouldn't load for some users. * Updated the endpoint in the Salesforce code sample from `/query/Account` to `/query`. * Fixed an issue where an `a.trim is not a function` error would prevent users from deploying workflows. * Fixed an issues where users were not able to enable the QuickBooks integration from the Connect Portal. * Fixed an issue where users were unable to select a Zendesk account to use with the Zendesk triggers on Paragon Automate. ## 🛠 Improvements * App Events are now ordered alphabetically. This should make it easier to find your events from the App Events page. * You can now see the deployment status of the workflows connected to App Events via the App Events page. * Salesforce Webhook triggers now support all Salesforce Editions with API access. * We now present loading states in the Connect Portal for loading values. * It's now easier to access the User Setting editing panel. * You can now access all of Slack's scopes when creating your Slack integration. * You can now call `Paragon.getUser()` to access the **providerId** of any integrations that user has connected! * The Paragon Connect API now supports file uploads. * Users are redirected to the `Configuration` tab to select your workflows upon enabling an integration. * Inputs in the Connect Portal are now searchable. * Inputs in the Connect Portal now show loading states. * The following scopes have been added to Slack: `channels:history`, `groups:history`, `im:history`, `mpim:history`. * Improved workflow validation for function steps. ## 🚀 New Features ✨**`.subscribe()` to Paragon SDK Events!** Developers rejoice! You can now subscribe to different events that occur within the SDK: * **Integration enabled** (`"onIntegrationInstall"`) * **Integration disabled** (`"onIntegrationUninstall"`) * **Workflow state change** (`"onWorkflowChange"`) * **Connect Portal opened** (`"onPortalOpen"`) * **Connect Portal closed** (`"onPortalClose"`) Learn more about subscribing to SDK events and SDK callbacks in [our documentation](/apis/api-reference). ✨**Salesforce Sandbox Account Support!** Salesforce Sandbox accounts are now supported in the Connect Portal! You can learn more about our Salesforce integration in our documentation [here](/resources/integrations/salesforce). ✨**Workflow Validation!** The Workflow Builder became a little bit more sentient with this update and now informs you of misconfigured or empty fields. This is great for those times a workflow doesn't run as you'd expect it to. ✨**Zendesk Webhook Triggers!** You can now trigger workflows when tickets are created or updated in Zendesk Support, making it easy to sync data in real-time between your users' Zendesk accounts and your app. Learn more in [our docs](/resources/integrations/zendesk). ## 🐛 Bug Fixes * Slack OAuth scope options now includes `chat:write.public` * Fixed an issue where the `Custom Object Map` user setting in Salesforce would result in a `500` error for some users. * Fixed a UI bug where the App Events page would display the incorrect connected workflows. * Fixed a bug where App Credentials for integrations weren't deleted properly when the integration was removed. * Fixed an issue where workflow validation may apply to unused steps. * Fixed an issue where some users were unable to deploy Paragon Connect workflows with Connect credentials. * Fixed an issue where Salesforce would return an error if a record type had too many fields. * Fixed an issue where API requests issued from the Paragon Connect SDK are always "application/json". * Fixed an issue where users could pause workflows that have already finished. * Fixed an issue where some users wouldn't see their list of Slack channels. * Fixed an issue where headers passed into a Connect API request weren't forwarded to the end provider. * Fixed a bug where Task History periodically "flashes" if empty. ## 🚀 New Features ✨**Auto-refreshing Task History!** You heard right -- no more refreshing your Task History page to view your latest workflow executions! Any workflows that were previously running also update to succeeded to failed if they've been updated. **✨[Microsoft Teams](/resources/integrations/microsoft-teams) Integration** You can now integrate your Microsoft Teams account to send messages to channels and chats! Check out [our docs](/resources/integrations/microsoft-teams) to get started. ✨**Marketo Custom Object support!** You can now create and map custom objects in your Marketo workflows. ## 🛠 Improvements * Added loading animations to the Workflow dashboard and Task History in Paragon Automate. * QuickBooks now accepts `JSON` input for line items. * You can now view custom properties in HubSpot. * All actions now support the "continue if request fails" option. * Deleting a workflow redirects to the integration page instead of the top-level integration dashboard. * Improved Connect Portal alignment when using Safari. ## 🐛 Bug Fixes * Fixed spelling for Microsoft Teams * Fixed an issue where the OAuth Authentication window would appear twice when enabling the Shopify and Zendesk integrations. * Fixed a UI issue where `topic`, `start time`, `duration`, and `timezone` were not marked as *optional* when updating meetings in Zoom. * Fixed an issue where enabling the "Sent from a Paragon workflow" message in Slack would send an incomplete link to the workflow execution. * Fixed an issue where App Event data may show up as `undefined` in the Workflow Editor. * Fixed an issue where switching between Paragon Connect and Paragon Automate would show all Automate workflows as "undeployed". * Fixed a UI bug where the Connect Portal styling would apply to the main window. * Fixed an issue with Google Sheets where creating rows with numbers or dates puts a `'` character before the value. * Fixed spelling in App Events. * Fixed an issue where users would not be able to navigate between Paragon Connect and Paragon Automate when viewing Task History. * Fixed an issue where sending invitations to Team members to join Paragon would show up in the Spam inbox for some users. * Fixed a spelling error in the default description for the Zoom integration. * Fixed an issue where the `Create Invoice Line Item` action for QuickBooks wouldn't accept values from the dynamic variable menu. ## 🚀 New Features **✨[Zoom](/resources/integrations/zoom) Integration** You can now integrate your Zoom application to create, update, and manage meetings in Zoom! This integration also supports OAuth, allowing you to connect with your users' Zoom accounts and integrate them with your workflows. Check out [our docs](/resources/integrations/zoom) to get started! **✨[Marketo](/resources/integrations/marketo) Integration** You can now integrate your Marketo account to create, update, and manage leads and lists in Marketo! This integration also supports User Credentials, allowing you to connect with your users' Marketo accounts and integrate them with your workflows. Check out [our docs](/resources/integrations/marketo) to get started! ✨**Integration Enabled Triggers!** Paragon Connect workflows can now be triggered when a user initially activates your integration. This is great for syncing contacts between your app and your user's CRM. Learn more about Integration Enabled triggers in [our docs](https://app.gitbook.com/@paragon-1/s/docs/workflows/triggers#integration-enabled). ✨**Whitelabel your Connect Portal!** To remove the Paragon branding from your Connect Portal, visit the **Appearance tab** in your customization settings. *This feature is available on our* ***[Pro plan](https://www.useparagon.com/pricing)*** *and above.* ## 🛠 Improvements * The step-timeout limit for users on the `Premium` Tier increased from `60` to `120` seconds. * Newly created Slack channels will appear in the dropdown menu when selecting a channel in Paragon Automate. * You can now create and edit App Event JSON without wrapping the `keys` in quotation marks `"`. * The Paragon Connect SDK can be loaded in the `` tag of your application. ## 🐛 Bug Fixes * Fixed an issue where the Salesforce OAuth token may expire. * Fixed an issue where Paragon Connect workflows could not be paused. * Fixed a bug where steps inside of a Fan Out would continue to execute if the workflow was paused during the Fan Out. * Fixed an issue where the OAuth window for integration providers would be blocked on Firefox. * Updated documentation references. * Fixed an issue where failed workflow emails wouldn't send for Paragon Connect workflows. * Fixed an issue where recently undeployed App Event-triggered workflows would still execute when the App Event was triggered. * Fixed a bug where the "Enable workflow" prompt may appear after it's already enabled. * Fixed an issue where editing a step from the Task History in Paragon Connect would lead to the Integrations Dashboard ## 🚀 New Features ✨**Webhook Triggers!** You can now trigger Connect workflows when records are created or updated in your users' Salesforce or HubSpot accounts, making it easy to sync data in real-time between your users' CRM and your app. Learn more in [our docs](/workflows/triggers). ✨ **Salesforce Custom Objects and Fields!** Our Salesforce integration now allows your users to choose their own custom object and field mapping in the Connect Portal, so you can sync data from your app to any objects or fields in your users' Salesforce instance. You can also deploy your own custom objects and fields to your users' Salesforce instance. Learn more in [our docs](/resources/integrations/salesforce). ## 🐛 Bug Fixes * **Paragon Connect:** The Salesforce SDK proxy now works for requests with an HTTP body. ## New ## 🛠 Improvements * You can now update a Slack notification preview when using Block Kit JSON. * Preview credentials are no longer required to display App Event test data in Paragon Connect. * You can now access the `jsonwebtoken` npm module in the Function step. ## 🐛 Bug Fixes * **Paragon Connect:** Shopify `read_users` scope is now off by default. ✨ **New Feature: Task History on Connect!** You can view your **[Task History](/monitoring/viewing-task-history)** in the sidebar of your Paragon Connect dashboard. Task History keeps track of your workflow executions and lives on the left side of the dashboard. It serves as a timeline and an easy way to navigate through your workflow history, revisit any failed workflows, and get a step-by-step breakdown of the executed tasks in each one. * Fixed an issue where Asana would only show 50 projects. ## New ## 🐛 Bug Fixes * Salesforce "Search records by SOQL query" now displays the query interface. * Fixed an issue where saving a version in Version History would use the incorrect timestamp. * Fixed an issue where the start time for updating a Google Calendar event was not marked as *optional* ## 🛠 Improvements * Version History is now supported for Paragon Connect workflows! * Fixed a bug preventing users from editing Delay steps. * Fixed a UI issue where the Task Usage would disappear after refreshing the page when viewing Task History. * Fixed an issue where Fan Outs would give an incorrect preview reference: `Preview data (1 of 1)` Great news everyone! We made some major improvements to the user experience of building workflows. You can now right-click on any step to bring up the context menu. The **context menu** allows you to add steps in those hard-to-reach places, like in-between two Fan Outs or before a Conditional step. * Workflow steps can be moved from anywhere, just drag and drop to rearrange your workflows! * Added "Add to Step" to the context menu when right-clicking on a step in the Workflow Editor. * Fixed "Please specify a project type" error when creating a new account with `Personal` project type. ## New ## 🛠 Improvements * You can now access the [`snowflake-sdk`](https://www.npmjs.com/package/snowflake-sdk) npm module in the Function step! ## 🐛 Bug Fixes * Fixed an issue where duplicating a workflow wouldn't open the duplicate. * Workflow executions in Task History replay properly if the workflow is currently undeployed. * App icons no longer clip in Workflow steps. ## ✨ Paragon Connect Paragon Connect allows developers to embed user-facing SaaS integrations into their product in minutes. Setup the Paragon SDK once and instantly integrate your product with popular SaaS apps like Salesforce, HubSpot, Slack, JIRA, and more. Learn more about Connect [here](/). You can now access **Paragon Connect** in your sidebar menu of your Paragon dashboard. * Higher resolution app icons. * Premium Tier deployed workflow limit has been increased from 100 to 250 deployed workflows. * Fixed keyboard navigation when tagging workflows in the workflow dashboard. ## New ## New Features **✨Workflow Search** Can't find that workflow you've been working on? Well, look no further! You can now search and filter workflows in the Workflow menu! **✨Workflow Tags** You can now create and sort your workflows by tags! Just click the triple-dot menu and select **"Tag"**. *** It wouldn't be an update without bug fixes and improvements! ## Integrations **✨New Integration: [Asana](automate/resources/integrations-catalog/asana)** You can now query, add, and update projects and tasks in Asana. **✨New Integration: [Zendesk](automate/resources/integrations-catalog/zendesk)** You can now query, add, and update support tickets in Zendesk Support. Both integrations also support OAuth, allowing you to connect with your users' Asana or Zendesk Support accounts and integrate them with your workflows. Check out [our docs](automate/resources/oauth) to get started! *** ## Triggers **✨New Event-based Trigger: [MongoDB](automate/resources/integrations-catalog/mongodb)** You can now trigger workflows when a record is created or updated in your MongoDB database. As usual, we added a bunch of bug fixes and improvements! ## Updates **Updated the Request Step** with native support for different body types (JSON, multipart/form-data, x-www-form-urlencoded, raw) and authentication (Bearer Token or Basic auth). We also added support for tokenized variables in the Request parameters in addition to a few other quality of life improvements! As usual, we added bunch of bug fixes and improvements! **✨New Feature: [Version History](automate/building-workflows/version-history)!** You can now save versions of your workflows so that you can easily view or restore to previous versions! A version is automatically created every 10th auto-save, or you can save manually with ⌘⇧S (CTRL+Shift+S on Windows). **✨New Integration: [Quickbooks](automate/resources/integrations-catalog/quickbooks)!** You can now access and manage Quickbooks accounts, bills, customers, invoices, and payments. **✨New Integration: [Klaviyo](automate/resources/integrations-catalog/klaviyo)!** You can now create and manage Klaviyo campaigns, lists, subscribers, and templates. **✨New Integration: [Tableau](automate/resources/integrations-catalog/tableau)** You can now query, add, and update data quality warnings in Tableau. Made significant updates to the overall performance and speed of Paragon's web app. ## Updates **✨ New Feature: Integrations Manager!** You can now view, edit, and manage all the integrations connected to your Paragon account! Navigate to the **Integrations** tab in your dashboard sidebar to check it out! **Released [Paragon On-Prem](https://github.com/useparagon/on-prem)**, allowing you to deploy and run Paragon entirely on your own infrastructure! If you're interested in Paragon On-Prem, email us at [sales@useparagon.com](mailto:sales@useparagon.com). Improved performance when Fanning Out large arrays, among other bug fixes and improvements. **✨New Integration: JIRA!** You can now integrate with your JIRA account to create, update, and manage issues in your JIRA projects! You can also use our JIRA OAuth integration to allow your users to connect their JIRA accounts to your app. Check out [our docs](automate/resources/integrations-catalog/jira) for more. Made some major improvements to workflow performance - workflows now execute as much as 10x faster than before! Our Google Calendar integration now supports adding conference data to calendar events. Our AirTable integration now supports filtering columns by date when fetching records from a base. **✨New Feature: Auto-retries!** Workflow steps that perform a request now automatically retry if the request fails. When Auto-retry is enabled, Paragon will re-attempt failed requests up to several times, waiting after each attempt before performing the next retry. Auto-retries are available on our [Business plan](https://www.useparagon.com/pricing) and above **✨New Feature: MySQL Trigger!** You can now trigger workflows when a record is created or updated in your MySQL database! As always, a number bug fixes and performance improvements! **✨New Integration: Google Calendar!** You can now connect Paragon with Google Calendar to create, updates, and retrieve calendar events! Our new Google Calendar integration also supports OAuth-enabled apps, so you can integrate with your users' Google Calendar accounts, too. [Read more in our docs](automate/resources/integrations-catalog/google-calendar). **✨New Integration: FTP/SFTP!** You can now connect to an FTP or SFTP server from Paragon to download or upload files! [Read more in our docs](automate/resources/integrations-catalog/ftp). A bunch of performance improvements and bug fixes. **✨New Integration: Hubspot!** You can now integrate with Hubspot to create, update, and search Hubspot CRM records! Our Hubspot integration also supports OAuth, allowing you to connect with your users' Hubspot accounts and integrate them with your workflows. Check out [our docs](automate/resources/integrations-catalog/hubspot) for more. As always, numerous bug fixes and performance improvements. **✨ New Integration: OneSignal!** You can now send your users push notifications with our new OneSignal Integration! [Read more in our docs](automate/resources/integrations-catalog/onesignal). **You can now send rich, interactive Slack messages with Paragon** - our Slack integration now supports Slack's Block Kit JSON Builder! Improved performance when displaying integrations with a large number of input fields. Fixed a bug where Task History workflow executions sometimes couldn't be paused. **✨New Feature: Variable menu search and keyboard controls!** When inserting variables with `{{`, you can now search the variable menu by typing the step number and variable name. You can also navigate the menu by using the ⬆⬇ arrow keys and the Return key to select. **✨New Feature: Slack Block Kit support!** Our Slack integration now supports rich, interactive Slack messages created with the [Slack Block Kit Builder](https://app.slack.com/block-kit-builder) by simply copying the JSON payload from the Block Kit Builder into Paragon. Added a "Clear rows" action to our Google Sheets integration, allowing you to clear the contents of a row without deleting the row itself. Improved the composing experience of our Sendgrid integration. Improved performance when performing a Fan Out on a large array. ## Updates To make it easier to access javascript libraries within Functions, new functions will automatically come with the `libraries` parameter. You can now access the `s3` library in the Function step! Bug fixes and performance improvements! Added a "What's New" tab in the dashboard to showcase our latest release notes and product updates. You might even be reading this there! 🙃 You can now access the `lodash` npm module in the Function step! And of course…. bug fixes and performance improvements! ✨**New Feature: PostgreSQL Database Trigger!** You can now trigger workflows when a record is created or updated in your PostgreSQL database! Check out [our docs](automate/building-workflows/triggers) to learn more. ✨**New Feature: OAuth Integration!** You can now authenticate and build workflows with your users' Slack and Google accounts! Check out [our docs](automate/building-workflows/configuring-oauth) to learn more. Bug Fixes and performance improvements! **✨New Feature: Salesforce Integration!** Our most requested feature is here… you can now build workflows that create, update, and access records in Salesforce! What's more, our new Salesforce integration also supports OAuth, so you can integrate with your users' Salesforce accounts. Check out [our docs](automate/resources/integrations-catalog/salesforce) to learn more. ## Enhacements **✨New Feature: Onboarding Tutorial!** New users are now greeted with an onboarding tutorial that guides them through how to build a user re-engagement workflow. Task History now displays the number of [tasks](/billing/tasks) that were run in each execution. Failed workflow execution email alerts now include a link to their respective Task History execution. Improved app performance when viewing very large workflow executions in Task History. Added "Does not equal" as an operator to the Conditional step. ✨ **New Feature: Stripe Integration!** Connect your Stripe account to Paragon to build workflows with your customer and subscription data from Stripe! Check out our [documentation](automate/resources/integrations-catalog/stripe) to learn more about using Stripe with Paragon! **You can now right click on steps** to duplicate or delete them! As always, many bug fixes and performance improvements. ✨ **Paragon now has a brand new sign up experience**! If you haven't signed up already, check it out [here](https://app.useparagon.com/signup). You can now open Workflows and Task History executions in a new tab! Fixed an issue where string variable references would cause a step to fail if its value was null or undefined. Fixed an issue where completed workflows would sometimes appear to be still running in Task History. Bug fixes and improvements! ## Updates 🚀**Improved workflow performance** when using Fan Out on a large set of data. ✨ **New Feature: Replay Tasks**. You can now replay failed workflow executions from the Task History page! Task History now displays workflow executions in real time. You can now access the `https` npm module in Functions. You can now access the `slack`, `luxon`, `ramda`, and `date-fns` in the Function Step! Note that `date-fns` is accessed as `libraries.dateFns`. ✨ **New Feature: Task History Filters**. To help you navigate your Task History more easily, you can now filter executions by workflow, status, and date range! We made some **huge improvements** to Fan Out performance. Any Fan Out over 50 items now executes serially (instead of in parallel), making it far more resilient - especially if you need to avoid hitting API rate limits. The Airtable step now allows you to **select your Airtable Base and View**, rather than having to type them in! We also improved how we show your Airtable fields when creating or updating records. You can now access the `csv` and `redis` npm modules in the Function step! **New Feature: Environment Secrets**. You can now securely store and use environment secrets like API Keys in your workflows! Our MongoDB integration now supports writing raw Mongo queries. You can now view your task usage in the dashboard sidebar. You can now manage your Paragon subscription and billing information. Redesigned the dashboard sidebar to be a little more visually consistent with the rest of the app. # Customizing the Connect Portal Source: https://docs.useparagon.com/connect-portal/connect-portal-customization Control your end-user integration experience by customizing Connect Portal. The **Connect Portal** is a ready-made interface that lets your users connect their third-party app accounts to your application. Paragon's out-of-the-box Connect Portal To customize the Connect Portal for a specific integration, go to the Integration Overview page and click **Customize Connect Portal**. This opens the **Connect Portal Editor**. Within the Connect Portal Editor, you can tailor several aspects of the user experience: * **[Overview](#overview):** Update the integration's description shown in the Overview tab. * **[Configuration](#configuration):** Adjust how workflows and workflow settings appear in the Configuration tab. * **[Appearance](#appearance):** Change the visual style of the Connect Portal. ## Overview There are two options you can edit in the **Overview** tab: * **Short description:** a one-line description of your integration that appears at the top of the Connect Portal. * **Overview**: a long-form description of your integration. This description is the first thing your users see when opening the Connect Portal, so this is the best place to describe and showcase your integration's benefits in detail to your users. You can use [Markdown formatting](https://commonmark.org/help/) in the Overview section. ## Configuration ### Settings Under the **Settings** section of the Configuration tab, you'll be able to create user-facing settings that allow your users to configure parameters of their workflows from the Connect Portal. Some example use cases of User Settings include: * **Slack:** choosing which channel that messages should be sent in * **Salesforce:** choosing a custom opportunity stage that new opportunities created in * **Hubspot:** choosing a custom lead status that new leads should be created with * **Jira:** choosing which Jira user that new issues should be assigned to }> Learn more about adding and configuring User Settings to let your users customize their integration and workflows. ### Workflows Under the **Workflows** section of the Configuration tab, you can control the visibility and customize the description of workflows that appear in the Connect Portal. }> Learn more about controlling which workflows appear in the Connect Portal and how they are displayed to your users. ## Appearance ### Theme The Connect Portal supports both light and dark themes, allowing you to choose a theme that matches your application's overall theme. The Connect Portal can also detect and match your user's system theme settings by selecting "Match System Theme" from the theme dropdown. #### Light #### Dark ### Paragon Branding You can optionally turn off the Paragon-branded footer in your Connect Portal. Whitelabeling the Connect Portal, which allows you to remove Paragon branding, is available on our **Pro plan** and above. Please [contact us](mailto:sales@useparagon.com) to enable this option on your account. # Displaying Workflows Source: https://docs.useparagon.com/connect-portal/displaying-workflows Control the visibility or customize the description of workflows that appear in the Connect Portal. Workflows are an easy way for members of your team to build integration logic. Workflows appear in the Connect Portal, in the **Configuration** tab, as a way for your users to opt-in or out of specific features of your integration. ## Customizing the Workflow List You can customize the Workflow List and their display options by visiting the **Configuration** tab of the Customize Connect Portal screen for any integration. **Not seeing a workflow in the Connect Portal?** Workflows do *not* appear to your users in the Connect Portal if: * The workflow is not deployed * The workflow is hidden for all users * The workflow uses an Integration Enabled trigger ### Reordering Workflows Drag and drop Workflows to change the order in which they appear to your users in the Connect Portal. ### Workflow Display Options By clicking on a workflow row, you can edit the display options for that specific workflow: #### Name and Description This is the user-facing name and description of the workflows as it appears in your Connect Portal. You should give your workflow a descriptive name and explain the functionality that it provides in the description to make it easy for your users to decide which workflows they want to activate. #### Settings Workflow-level User Settings can be added to allow customization that is specific to a particular workflow (as opposed to User Settings that apply to multiple workflows across the integration). Your user's selection for workflow-level User Settings will only be available to the workflow they are created for, as values available in the Variable Menu. Learn more about adding and configuring User Settings below: #### Default to enabled If turned on, the workflow will appear as enabled by default once a user connects their account to the integration. *This setting is unavailable for workflows that have required workflow-level User Settings.* Turning on this option will *not* affect the workflow's status for existing users. For example, if the workflow is disabled for an *existing user* prior to turning on this option, it will remain disabled after turning on this option. #### Hide workflow from Portal for all users If turned on, the workflow will be hidden from all users from the Connect Portal. The workflow can still be enabled by default (using the "Default to enabled" option described above) or enabled with a request to the [users.md](/apis/users). **Workflow Permissions** You can restrict the visibility of workflows to specific users (or groups of users) with Workflow Permissions. Learn more about adding and configuring Workflow Permissions below: # Field Mapping Source: https://docs.useparagon.com/connect-portal/field-mapping Use a Field Mapping User Setting to allow your users to define a mapping between objects in your application and their integration. ## Overview A **Field Mapping** is a type of User Setting that allows your users to define a mapping between an object in your application (an "Application Object") and an object in their connected integration account (an "Integration Object"). For example: let's say your integration needs to sync your user's Task records from your application to their Tasks in a Salesforce account. To do that, you'll need to build up a **Mapping** between fields in your application's Tasks and fields for a Task in a connected Salesforce account, as illustrated below: To enable your user to provide this Mapping, you can use the Connect Portal to provide a User Setting that displays each field of a Task (Title, Description, Completed) and prompts them to select a matching field of a Salesforce Task. Once this Mapping is completed, you're able to use the Mapping like any other [User Setting](/connect-portal/workflow-user-settings/workflow-user-settings#user-settings) in the [Workflow Editor](/connect-portal/field-mapping#usage-in-workflows) to transform objects in either direction (from Application Object to Integration Object **or** from Integration Object to Application Object). ## Adding Field Mapping to the Connect Portal In an integration in your project, click on **Customize** from the Connect Portal section in the dashboard. Select **Configuration**, add a **Setting**, and then select **Field Mapping** as the type of User Setting. Give this setting a descriptive name that explains what this Mapping represents for your integration. For example, if Contacts is your intended Application Object to be mapped to a Salesforce Object, you might title this input "*Map Contacts to this object*". Add a label for each property that should be mapped from your Application Object to a Salesforce Object. You might add labels for "First Name", "Last Name", and "Email", if the schema for Contacts in your app includes these properties. In your [Connect Portal](/getting-started/displaying-the-connect-portal), your users will be prompted to select an object from their Salesforce instance when enabling this workflow. For each of the Application Object properties you labeled, your users will be prompted to select which Integration Object field that property should be mapped to. By this stage, you have configured a static Field Mapping in the dashboard and can call `paragon.connect` to render the Field Mapping in the Connect Portal in your frontend application. ## Configuring Field Mapping Many implementations of Field Mapping will warrant additional configuration options. Start by using the Paragon Dashboard to enable additional configuration options for your Field Mapping like [Dynamic Application Fields](#dynamic-application-fields). Then, learn how to [pass dynamic fields through the Paragon SDK](#passing-dynamic-fields-through-the-sdk) in your frontend to render dynamic Field Mapping elements in the Connect Portal. ### Configuring your Field Mapping setting in the Dashboard #### Dynamic Application Fields If your Application Fields may vary between your users for a particular Mapping, you are able to provide those options from your frontend application, through the SDK, using **Dynamic Application Fields**. **Dynamic Application Fields is available for Paragon Enterprise customers and as an add-on for Paragon Pro customers.** To learn more, contact your Customer Success Manager or [sales@useparagon.com](mailto:sales@useparagon.com). Enable and configure Dynamic Application Fields by adding a Field Mapping input to your Connect Portal as described above. Configuration for Dynamic Application Fields will have a different interface depending on the integration. Complete the dashboard configuration for Dynamic Application Fields using the following steps, depending on the interface you see: Pre-configured Field Mappings simplify the `paragon.connect` call by rendering pre-built dropdowns for the most common object types and fields for you. Toggle on the "**Use dynamic fields**" slider option in your Field Mapping setting configuration. Provide an Object Name that represents the name of your Application Object. This name will be used as an identifier to provide dynamic application fields through the SDK, as demonstrated in the code example to `paragon.connect` in the [Passing Dynamic Fields through the SDK](#passing-dynamic-fields-through-the-sdk) section. Edit the example fields included in the code snippet to represent realistic values that will be passed from your application. These values will be used for testing in the Workflow Editor, and will not affect the live configuration for your users. Learn more about testing your Field Mapping in the [Testing Field Mapping in the Workflow Editor](#testing-field-mapping-in-the-workflow-editor) section. Click **Save** to apply your changes. By default, the Field Mapping Input will have Dynamic Field Mapping enabled. Provide an Object Name that represents the name of your Application Object. This name will be used as an identifier to provide dynamic fields through the SDK, as demonstrated in the code example to `paragon.connect`. Edit the example `objectTypes` and `integrationFields` included in the code snippet to represent realistic values that will be passed from your application. This will not affect the live configuration for your users, since values must be passed from your frontend application through the SDK, but use this to test example field values while building workflows. Learn more about testing your Field Mapping in the [Testing Field Mapping in the Workflow Editor](#testing-field-mapping-in-the-workflow-editor) section. Click **Save** to apply your changes. ### Passing Dynamic Fields Through the SDK For all Field Mapping inputs configured in the Dashboard to use Dynamic Application Fields, use the `paragon.connect` method in your frontend to fully configure the **Integration Objects**, **Integration Fields**, and **Application Fields** that are rendered dynamically in the Connect Portal. [Pre-configured Field Mappings](#pre-configured-field-mapping-support) simplify the SDK call by pre-building dropdowns for the most common object types and fields for you and minimally require you to specify your *Application Fields* in the SDK. You can think of this as the *right-hand-side* of the Field Mapping input. For all other integrations, you must define the Integration Objects, their Integration Fields (the *left-hand-side* of the Field Mapping input), and your Application Fields. #### Passing Application Fields for a Pre-configured Field Mapping Pass your Application Fields by specifying the `mapObjectFields` option, with an object keyed by the name you specified in the "Object Name" field when configuring your setting: ```js Open a pre-configured Field Mapping with Dynamic Application Fields paragon.connect("salesforce", { mapObjectFields: { "Task": { fields: [ { label: "Title", value: "title" }, { label: "Description", value: "description" }, { label: "Completed?", value: "isCompleted" } ] } } }); ``` For each field passed, two values are specified: * `label`: The human-readable description for the field. This will be shown to the user in the Field Mapping input. * `value`: The field key used by the object as it exists in your application. *This key does not yet support nested properties.* Calling the above would result in the Connect Portal appearing like below: #### Passing Your Own Integration Objects and Fields For all integrations, you can fetch and render any object type and its fields that are available in the user's connected integration. Define the `objectTypes` and `integrationFields` properties and their `get` methods to render either a static list of objects and their fields, or a paginated list of objects and their fields via an API request. * `objectTypes` — defines the list of record types available in the user’s integration (e.g. “Contact”, “Deal”, “Opportunity”). * `integrationFields` — defines the fields available for the selected record type. The both properties require a `get` method that must return either: * A Promise that resolves to an array of dropdown options, where each is a `{ label, value }` pair as defined above in [Passing Application Fields for a Pre-configured Field Mapping](#passing-application-fields-for-a-pre-configured-field-mapping) example, or * An object containing both the dropdown options and a pagination cursor ```ts objectTypes: Array of Dropdown Options // objectTypes { get: async (cursor, search) => { return [ { label: "Contact", value: "contact" }, { label: "Deal", value: "deal" }, { label: "Opportunity", value: "opportunity" } ] } } ``` ```ts objectTypes: Paginated Dropdown // objectTypes { get: async (cursor, search) => { return { options: [ { label: "Contact", value: "contact" }, { label: "Deal", value: "deal" }, { label: "Opportunity", value: "opportunity" } ], nextPageCursor: "123" } } } ``` **applicationFields** When passing your own object types and fields, you must alter your `paragon.connect` call to explicitly define the `applicationFields` property. `applicationFields` defines the list of fields from your application. It should contain a `fields` array containing `{ label, value }` pairs identical to the `fields` array in the [Passing Application Fields for a Pre-configured Field Mapping](#passing-application-fields-for-a-pre-configured-field-mapping) example. The following are examples of how to fully configure `objectTypes`, `integrationFields`, and `applicationFields` when passing your own object types and fields: ```ts paragon.connect("salesforce", { mapObjectFields: { // Replace "CustomObjectMapping" with your Application Object Name as specified in // Field Mapping input options CustomObjectMapping: { objectTypes: { get: async (cursor, search) => { const res = await paragon.request("salesforce", "/v1/objects", { method: "GET" }); return res.data.map((obj) => ({ label: obj.name, value: obj.id })); } }, // Integration fields from the selected objectTypes (Contacts' schema / field types) // @returns Promise resolving to Integration Fields to display. // Each item: { label: string, value: string } integrationFields: { get: async ({ objectType }) => { const res = await paragon.request("salesforce", `v1/objects/${objectType}/fields`, { method: "GET" }); return res.fields.map((field) => ({ label: field.label, value: field.id })); } }, // Fields from your application that will be displayed in the Connect Portal applicationFields: { fields: [ { label: "Title", value: "title" }, { label: "Email", value: "email" } ], defaultFields: [], userCanRemoveMappings: true } } } }); ``` ```ts paragon.connect("slack", { mapObjectFields: { // Replace "SlackObjectMapping" with your Application Object Name as specified in // Field Mapping input options SlackObjectMapping: { objectTypes: { get: async (cursor, search) => { const url = `/conversations.list${cursor ? `?cursor=${encodeURIComponent(cursor)}` : ''}`; const res = await paragon.request("slack", url, { method: "GET" }); // Optional search filter (case-insensitive) const filteredChannels = (res.channels || []).filter(ch => !search || ch.name.toLowerCase().includes(search.toLowerCase()) ); const channels = filteredChannels.map(ch => ({ label: ch.name, value: ch.id, })); return { options: channels, nextPageCursor: res.response_metadata?.next_cursor || null, }; }, }, // Integration fields from the selected objectTypes (Conversations' schema / field types) // @returns Promise resolving to Integration Fields to display. // Each item: { label: string, value: string } integrationFields: { get: async () => { const res = await paragon.request("slack", "/conversations.list", { method: "GET" }); const options = (res.channels || []).map(ch => ({ label: ch.name, value: ch.id, })); return { options }; }, }, applicationFields: { fields: [ { label: "Channel Name", value: "name" }, { label: "Channel ID", value: "id" }, ], }, }, }, }); ``` #### User-Configurable Mappings If your use case requires it, you can allow users to control the *number* of Field Mappings that are set by adding the `userCanRemoveMappings` option alongside the `fields` array in your `paragon.connect` call. ```js paragon.connect("salesforce", { mapObjectFields: { // Replace "Task" with your Application Object Name as specified in // Field Mapping input options "Task": { fields: [ { label: "Title", value: "title" }, { label: "Description", value: "description" }, { label: "Completed?", value: "isCompleted" } ], userCanRemoveMappings: true } } }); ``` Setting this option will result in the Connect Portal appearing like below: With this option, your users will be able to remove, re-add, and change any of the Mappings that are passed through `fields`. This option can be combined with the `defaultFields` option to achieve different display configurations: `defaultFields` is an array of strings matching the `value` property of your `fields`. Any fields with matching `value` keys will be included in the initial list of Field Mappings that your user sees, when viewing the Connect Portal for the first time. If `defaultFields` is unspecified, *all* fields specified in the `fields` property will appear in the initial list of Field Mappings. #### User-Creatable Fields If your Application Object supports freeform fields or a flexible schema, you can allow users to create their own fields in the Field Mapping input. ```js paragon.connect("salesforce", { mapObjectFields: { // Replace "Task" with your Application Object Name as specified in // Field Mapping input options "Task": { fields: [ { label: "Title", value: "title" }, { label: "Description", value: "description" }, { label: "Completed?", value: "isCompleted" } ], defaultFields: [], userCanCreateFields: true } } }); ``` If this option is specified, the Connect Portal will appear with an option for users to create their own fields, if the field is not available in the list populated by `fields`: ## Testing Field Mapping in the Workflow Editor When building workflows that use Field Mapping, you can test how your mappings work directly in the Workflow Editor. The mapping is applied based on what is configured for the Test User. ### Configuring Test User Mappings To configure the Field Mapping for the Test User: 1. Return to the **Customize Connect Portal** section of your integration in the dashboard. 2. Select the **Field Mapping** Input Type setting. 3. Alter the **Test Mapping** code to change the static Integration Objects, Integration Fields, and Application Fields that are rendered in the preview Connect Portal. (This has no production impact.) 4. Click **Save** to apply your changes. 5. **Preview the Connect Portal** to see the updated mapping configuration and fill-in the inputs to mimic the mapping you want to test. ## Usage in Workflows After your user specifies their desired mapping in the Connect Portal, you can use their chosen values within workflow actions. A Field Mapping contains 2 pieces of information: * The selected Integration Object type (for example, a Salesforce Task). * The field-level mappings between your Application Object and the selected Integration Object type (for example, Title ⇄ Salesforce Task Subject, Description ⇄ Salesforce Task Description). You can use the "**Apply field mapping**" option to transform Application Objects (from App Events or Request triggers) to Integration objects and vice versa. ### Transforming from Application Object -> Integration Object If you receive an Application Object in an App Event or Request payload, you can transform it into an Integration Object by selecting the **Field Mapping Object Type** in the "**Apply field mapping**" option for your App Event or Request trigger. Once set, you will see the trigger output data update to show two objects: * `originalPayload`: This is the original App Event or Request payload received by the trigger. * `mappedIntegrationObject`: This is the Integration Object that was mapped based on the Field Mapping configured in the Connect Portal. **Note:** The mapped Integration Object only applies to the **root** of the original payload. If your field exists within a nested JSON, it will not work as expected. ### Transforming from Integration Object -> Application Object When receiving an Integration Object in an Integration trigger (for example, a Salesforce "New Record" trigger), you can transform it into an Application Object using the Field Mapping specified by your user. In the trigger settings for your workflow, select the **Field Mapping Object Type** in the "**Apply field mapping**" option. Once set, you will see the trigger output data update to show two objects: * `originalPayload`: This is the original Integration Object received by the trigger. * `mappedApplicationObject`: This is the Application Object that was mapped based on the field mapping configured in the Connect Portal. ## Pre-configured Field Mapping Support Paragon provides pre-configured Field Mapping support for most CRM integrations, along with select others. These integrations come with fully maintained dropdowns for common record types and fields — you only provide your application fields. All pre-configured Field Mapping integrations can be overridden by using the SDK to define custom field mapping dropdowns as explained above. This gives you full control over record types, fields, and how they appear in the Connect Portal. (See [Passing Your Own Integration Objects and Fields](#passing-your-own-integration-objects-and-fields)). * [Close](/resources/integrations/close) * [Dynamics 365 Sales](/resources/integrations/microsoft-dynamics-365) * [Dynamics 365 Business Central](/resources/integrations/dynamicsbusinesscentral) * [HubSpot](/resources/integrations/hubspot) * [Jira](/resources/integrations/jira) * [Marketo](/resources/integrations/marketo) * [Pipedrive](/resources/integrations/pipedrive) * [QuickBooks](/resources/integrations/quickbooks) * [Sage Intacct](/resources/integrations/sage-intacct) * [Salesforce](/resources/integrations/salesforce) * [Sharepoint](/resources/integrations/sharepoint) * [ZohoCRM](/resources/integrations/zohocrm) # Headless Connect Portal Source: https://docs.useparagon.com/connect-portal/headless-connect-portal Bring your existing components or design system into your Paragon integrations experience with the Headless Connect Portal. If your app already uses a component library or design system, you may opt to use the Headless Connect Portal, which allows you to connect to your users' integration accounts with a custom user interface. The Headless Connect Portal provides a **fully managed authentication** so you don't need to worry about managing, storing, or refreshing your customers' credentials. ## Overview The SDK includes 4 main functions that allow you to use the Headless Connect Portal: * [`paragon.getIntegrationMetadata`](/apis/api-reference#.getintegrationmetadata): Returns display and branding information for integrations in your project, including a display name and icon. * [`paragon.installIntegration`](/apis/api-reference#installintegration): Prompts the user for third-party authorization details to connect their account. This function should be used when a user expresses intent to install your integration, for example: from a "Connect" button in your integrations catalog. * [`paragon.uninstallIntegration`](/apis/api-reference#.workflow): Disconnects the user's account. * [`paragon.getUser`](/apis/api-reference#.getuser-paragonuser): Returns the current state of the user, with their integrations and account statuses. ## Demo This demo is created based on our tutorial to [build an in-app Integrations Catalog](/tutorials/building-an-in-app-integrations-catalog), adapted to use the Headless Connect Portal to show a custom UI to connect your users' integration accounts. The repository with the completed code is available [here](https://github.com/useparagon/paragon-integrations-catalog-tutorial/tree/headless): ## Usage Before adding the Headless Connect Portal, you may want to start by following our tutorial to [build an in-app Integrations Catalog.](/tutorials/building-an-in-app-integrations-catalog) This will use some of the functions above to display a list of integrations and their account state. Once you have a list of integrations displaying in your app, you can use this UI as a starting point for adding the Headless Connect Portal. ### Displaying Integration Metadata To display an integration's metadata, use [`.getIntegrationMetadata`](/apis/api-reference#.getintegrationmetadata), passing the `integrationType` as the first argument. This will return an object with the matching integration's display metadata: ```js { type: 'salesforce', name: 'Salesforce', brandColor: '#057ACF', icon: 'https://cdn.useparagon.com/2.35.0/dashboard/public/integrations/salesforce.svg' } ``` You can use this to display info in your integration detail view component (in this example, a modal written with React and MUI): ```js import { Dialog, DialogContent, DialogContentText, DialogTitle, } from "@mui/material"; import useParagonGlobal from "../hooks/useParagonGlobal"; function IntegrationDetailView({ integrationType, onClose }) { const paragon = useParagonGlobal(); const integration = paragon && integrationType ? paragon.getIntegrationMetadata(integrationType) : { name: "", icon: "" }; return ( {integration.name} This is a description of the {integration.name} integration. You can customize this text is in your source code. ); } ``` We recommend including: * The integration icon image, as retrieved from the `.icon` property. * The integration's name, as retrieved from the `.name` property. * A short description of what functionality your integration provides. This description should vary for each integration and provide app-specific context. ### Connecting Accounts To add a **Connect** button to the Headless Connect Portal and prompt the user to connect an integration account on click, use the `.installIntegration` function. `.installIntegration` accepts the same `integrationType` argument, so we can pass this parameter through to this function: ```js ``` Once this is added, your Integrations Catalog will show the integration authorization when the **Connect** button is clicked. **Note**: Integrations that require text-based credentials (i.e. not OAuth) *and* integrations that require some information prior to starting the OAuth flow will briefly show the Connect Portal. ### Displaying Account State To add logic to your Headless Connect Portal to stay in sync with your user's account state, we can use `.getUser` and `.subscribe`. `.getUser` returns an object with the user's account state: ```json // Example return result from paragon.getUser() { "authenticated": true, "userId": "user-id", "integrations": { "salesforce": { "enabled": false, "configuredWorkflows": {} }, "slack": { "enabled": true, "configuredWorkflows": {}, "credentialStatus": "VALID", "credentialId": "81af6717-9476-458d-8c29-f0aee7ce6d12", "providerId": "TM7FL705V", "providerData": {} }, "hubspot": { "enabled": false, "configuredWorkflows": {} } }, "meta": {} } ``` We can use the result of this object to conditionally show a **Connect** or **Disconnect** button, depending on the value of `user.integrations[integrationType].enabled`. ```js function ConnectButton({ integrationType }) { const paragon = useParagonGlobal(); const { user } = useParagonAuth(paragon); if (!user?.authenticated || !integrationType) { return null; } if (!user.integrations[integrationType]?.enabled) { // User does not have integration enabled return ( ); } else { // User has integration enabled return ( ); } } ``` If you are already using the [`useParagonAuth` hook from the tutorial](/tutorials/building-an-in-app-integrations-catalog), the returned `user` object will automatically stay up-to-date by subscribing to `onInstallIntegration` and `onUninstallIntegration` events from the SDK, as shown below: If you are not using the `useParagonAuth` hook and are unable to, you can call `paragon.subscribe` on your own to receive updates, as demonstrated below: ```js // Adapted from useParagonAuth.ts function MyComponent() { const [user, setUser] = useState(); // Listen for account state changes useEffect(() => { const listener = () => { if (paragon) { const authedUser = paragon.getUser(); if (authedUser.authenticated) { setUser({ ...authedUser }); } } }; listener(); paragon?.subscribe("onIntegrationInstall", listener); paragon?.subscribe("onIntegrationUninstall", listener); return () => { paragon?.unsubscribe("onIntegrationInstall", listener); paragon?.unsubscribe("onIntegrationUninstall", listener); }; }, [paragon]); } ``` ### Workflows and User Settings At this time, the Headless Connect Portal does not include SDK functions for displaying workflows and user settings. However, it is possible to use the API to: * Get workflows associated with an integration, including their titles and descriptions * Get integration-specific options for User Settings (like a user's Salesforce Record Types) directly from the integration provider's API * Update User Settings and workflow state # Overview Source: https://docs.useparagon.com/connect-portal/overview Focus on building out your integration logic and leave integration authentication to Paragon. # Paragon's Authentication Layer Paragon provides a robust, fully-managed authentication layer that makes it easy to connect your users to third-party applications securely and efficiently. It is designed to handle the complexities of OAuth and other authentication flows, so you can focus on building your product. ## Implementation Options You have the flexibility to bring Paragon's authentication layer into your application in the way that best fits your needs: ### Connect Portal Use Paragon's out-of-the-box React component to quickly embed a beautiful, secure authentication and integration experience in your app. This option requires minimal setup and provides a streamlined user experience with built-in UI, onboarding, and management tools. Paragon's out-of-the-box Connect Portal }> Learn more about Paragon's out-of-the-box authetication portal. ### Headless Connect Portal Prefer to design your own UI? Paragon's Headless option gives you full control over the user interface while still leveraging Paragon's secure authentication and integration logic behind the scenes. Ideal for teams who want a fully custom look and feel while offloading the complexity of authentication. Paragon's Headless Connect Portal }> Learn more about Paragon's headless authentication portal. Both options provide: * Secure handling of OAuth and other authentication flows * Management of user settings, field mapping, and workflow visibility * A scalable, reliable foundation for integrating with third-party integration providers Explore the pages in this section to learn how to set up, customize, and get the most out of Paragon's authentication layer—whether you choose the Connect Portal or build your own experience with the Headless version. # Workflow Permissions Source: https://docs.useparagon.com/connect-portal/workflow-permissions Restrict the visibility of workflows to specific users or groups with Workflow Permissions. You can restrict the visibility of workflows to specific users or groups with Workflow Permissions. Workflow Permissions can be defined for any workflow as a set of conditions that a user's [metadata](../apis/users#associate-connected-user-with-metadata) must match in order for the workflow to appear in their Connect Portal. For example, you can use Workflow Permissions to: * Limit the availability of workflows to users on specific pricing plans * Build a bespoke workflow for a specific user * Roll out a new workflow to a group of users, under a feature flag Workflow Permissions is available on our **Enterprise plan** and above. Please [contact us](mailto:sales@useparagon.com) to enable this option in your account. ## Using Workflow Permissions Workflow Permissions are available in the options for any Workflow on the [Customize Connect Portal](./connect-portal-customization) page. Navigate to **Configuration > Workflows**, and choose any workflow to set Workflow Permissions. To set Workflow Permissions, click **Update** and create conditions for the user's metadata object. The fields shown in the field selection menu are based on the [User Metadata](../apis/users#associate-connected-user-with-metadata) for the Test User, which you can update by clicking "Set User Metadata" at the bottom of the menu. Finally, click **Save** to update the permissions for this workflow. **Note:** If the workflow has already been enabled for existing users prior to this change, it will automatically be disabled if their metadata does not match the saved permissions. ## How Workflow Permissions are applied If a Connected User does not satisfy the Workflow Permissions with the [User Metadata](/apis/users#associate-connected-user-with-metadata) associated with them, the workflow: * Will not appear in the Connect Portal for this user * Cannot be enabled for this user using the [Users API](/apis/users), [Connected Users Dashboard](/monitoring/users), or [by default](./displaying-workflows#default-to-enabled) * Cannot be triggered or executed for this user Workflow Permissions are re-evaluated whenever the conditions change for the workflow *or* when the metadata for the user has changed. # Custom Dropdowns Source: https://docs.useparagon.com/connect-portal/workflow-user-settings/custom-dropdowns Provide your users with dropdown options from your application. ### Overview Custom Dropdowns allow you to include custom dropdown inputs in the Connect Portal as a part of the User Settings of your integration. You can use Custom Dropdowns to allow your users to select: * Data from your app, like a destination Project to sync Jira tickets into * A type of User Setting that Paragon does not support natively, like a custom Salesforce enum. ### Usage To get started with Custom Dropdowns, visit your User Settings and add a new type of **Custom Dropdown:** Set a key name to refer to the dropdown when populating its available options. After setting a key name, an example of the code you need to call from your application to populate the dropdown will appear in the dashboard: ```js paragon.connect("jira", { dropdowns: { team: [ { label: "Team 1", value: "team-1" }, { label: "Team 2", value: "team-2" }, ], }, }); ``` Update your `paragon.connect` call to include the `dropdowns` parameter, which has the key names that you set above. This key can be set to an array of options with two keys: * `label` — The displayed text shown to the user for the dropdown option. * `value` — The value that will be saved (e.g. an option ID) when the user selects this dropdown option. * This value must be unique across all options in the array. If the value is found to be non-unique, the non-unique option will not be displayed in the list, and a console warning will appear. * If either `label` or `value` are missing, the option will not be displayed, and a console warning will appear. When reading the selection for this User Setting from the SDK or the Workflow Editor, the value will be set to the `value` property of the chosen option (or undefined if unselected). ### Loading a large number of options If your dropdown data is a large data set, consider defining pagination and search instead of passing a static list. Here is an example of a `loadOptions` function to paginate over a user's Google Drive folders: ```javascript JavaScript paragon.connect("googledrive", { dropdowns: { drivefolder: { loadOptions: async (cursor, search) => { try { const encodedQuery = encodeURIComponent( `mimeType='application/vnd.google-apps.folder'${ search ? ` and name contains '${search}'` : "" }` ); const foldersUrl = `https://www.googleapis.com/drive/v3/files?q=${encodedQuery}&fields=nextPageToken,files(id,name)&supportsAllDrives=true&includeItemsFromAllDrives=true&pageSize=50${ cursor ? `&pageToken=${cursor}` : "" }`; const foldersResponse = await paragon.request("googledrive", foldersUrl, { method: "GET" }); const folders = foldersResponse.files.map((folder) => ({ label: folder.name, value: folder.id, })); return { options: folders, nextPageCursor: foldersResponse.nextPageToken, }; } catch (err) { console.error("Error fetching Drive options", err); } }, }, }, }); ``` When you provide an object that includes the `loadOptions` function instead of a static list, the dropdown will paginate through options as the user scrolls and allow for remote search across all available data. `loadOptions` will be called with 2 arguments: * `cursor`: The last cursor to be called by the dropdown. If loading for the first time, this value will be undefined. * `search`: The search term that the user typed into the dropdown. If no search term was provided, this value will be undefined or the empty string (`""`). # User Settings Source: https://docs.useparagon.com/connect-portal/workflow-user-settings/workflow-user-settings Provide settings in the Connect Portal to allow your users to configure their integration and workflows. **User Settings** provide options for your users to configure settings for their integration in the Connect Portal. This makes it easy for you to create integrations that work with custom objects or fields that may be specific to your users' third-party app accounts. For example, common use cases include: * **Slack** - choosing which channel that messages should be sent in * **Salesforce** - choosing a custom opportunity stage that new opportunities created in * **Hubspot** - choosing a custom lead status that new leads should be created with * **Jira** - choosing which Jira user that new issues should be assigned to User Settings can be defined globally at the integration level or locally at the workflow level. * If they are included at the integration level, the User Settings can be referenced from any workflow for that integration. * If they are included at the workflow level, the User Settings will appear when that workflow is enabled by your user and can only be referenced from the workflow it belongs to. ## Adding User Settings To add User Settings at the integration level: 1. Click **Customize Connect Portal** in any integration's Overview page to open the Connect Portal Editor. 2. Click the **Configuration** tab in the sidebar. 3. Under **Settings** in the sidebar, click **+ Add Setting.** 4. Enter options for Name, Field Type, Tooltip, and whether or not the field should be required for your user to enable the integration. To add User Settings at the workflow level: 1. Click **Customize Connect Portal** in any integration's Overview page to open the Connect Portal Editor. 2. Click the **Configuration** tab in the sidebar. 3. Click on the workflow you'd like to add User Settings to. 4. Under **User Settings** in the sidebar, click **+ Add Setting.** 5. Enter options for Name, Field Type, Tooltip, and whether or not the field should be required for your user to enable the integration. ## Referencing User Settings in the Workflow Editor Actions in Paragon will indicate when they accept User Settings as an input parameter. In these cases, you should first add the respective User Settings in the Connect Portal Editor, then use the **variable menu** to reference that User Setting in the Action sidebar. Enter two left curly braces `{{` to open the **dynamic** **variable menu.** ## Testing User Settings To test your Workflow User Settings, open the click the **Preview** button in the top-right of the navigation bar. This launches a live preview where you can test the end-user experience of your Connect Portal. ### Connecting a test account By clicking **Connect** in the Connect Portal Preview, you can connect a test account for that integration and configure any of its Workflow User Settings for that test account. ### Testing workflows with user settings Once you've enabled an integration in the Connect Portal Preview, you can test its workflows using the **Test Workflow** or **Test Step** button in the Workflow Editor. This will test the workflow on the account that you connected in the Connect Portal Preview, and any User Settings you configured in the Connect Portal Preview will be used as test data. # Hosted Demo Environment Source: https://docs.useparagon.com/demo Start testing your Paragon integrations without embedding our SDK ## Overview Paragon’s [Demo Environment](https://demo.useparagon.com/demo) is designed to serve as an example implementation of a website with the Paragon SDK embedded in it. This allows you to test your workflow logic in a production-like environment without adding more code to your application today. Use the Paragon Hosted Demo Environment to test integration logic for on-premise instances by adding the host query parameter with your instance URL: `https://demo.useparagon.com/demo?host=``{your_instance_url}` Example: `https://demo.useparagon.com/demo?host=https://integrations.tasklab.com` ## Getting Started To get started: 1. Click “**Open Configuration**” 2. Input your Paragon Project ID. Your Project ID can be found in the URL of your Paragon Dashboard. 3. Input a Signing Key. You can create a Signing Key if you don’t already have one by going to Settings > SDK Setup and select “**Generate a New Signing Key**”. 4. Input a User ID. This is an example id based on a user / company in your application. Your account will then be connected to the demo and you will be able to view any integrations marked “`Active`” in your Paragon Dashboard. You can quickly [send data](/workflows/triggers) to Paragon through your browser’s console to test the functionality of sending it from your application. Using [Task History](/monitoring/viewing-task-history), you can verify that your workflows were successfully triggered. ## Testing Workflows Once you've connected to an integration, you can test any of the workflows for the integration. ### Via SDK 1. In your browser, right-click anywhere on the page and select “**Inspect**” to open the Developer Console. 2. Within the Developer Console, click on the **Console** tab to access the JavaScript console. 3. Copy the SDK call that triggers the desired workflow and paste it into the Console. [View triggers](/workflows/triggers). 4. Press `Enter` to send the SDK call and trigger the workflow. ### Via REST API 1. Navigate to a website or application you can use to test API requests, like Postman. 2. Copy the REST API call that triggers the desired workflow and paste it into the URL input. [View triggers](/workflows/triggers). 3. Use [Paragon's JWT Generator](https://jwt.useparagon.com/) to generate a JWT for the example user / company ID you provided earlier. 4. Under **Authentication**, select **Bearer Token** and paste the created JWT. 5. Press `Send` to send the REST API call and trigger the workflow. ## Validating Executions After triggering a workflow, you can view your workflow execution in [Task History](/monitoring/viewing-task-history). # Working with Multiple Projects Source: https://docs.useparagon.com/deploying-integrations/projects Create unique spaces for different teams to collaborate. ## Overview Create projects in your Organization. This is great for creating unique spaces for different environments, such as production, staging, and development. Each one has its own workflows and authentication methods so you can test out new changes before going live to your customers. **Looking for **`read-only`** Projects?** [Release Environments](/deploying-integrations/release-environments) provides access to `staging` and `production` projects that are `read-only`, allowing you to safely test and deploy changes across your development pipeline. ## Creating Projects To create a new project: 1. Click the Project dropdown in the top-left corner. 2. Click "**+ Create**" ## Managing Projects To view and manage projects: 1. Click the Project dropdown in the top-left corner. 2. Click "**Manage projects**". ## Deleting Projects To delete a project: 1. Click the Project dropdown in the top-left corner. 2. Under **Development Projects**, select the triple-dot menu for the Project you want to delete. 3. Click "**Delete project**". ## Copying Workflows You can copy workflows between projects by clicking the settings menu inside the Workflow Editor, then selecting **Copy from Project**. When copying from another workflow, your current workflow state will be saved in Version History. # Release Environments Source: https://docs.useparagon.com/deploying-integrations/release-environments Use Release Environments to test and deploy new integrations and integration updates. **Release Environments** are environments that your team can use to control the development lifecycle of integrations: * **Development:** Make updates to your integrations and workflows in a development project that can be modified by any member of your team. * **Staging:** Preview and test integrations in a read-only environment before deploying to Production. * **Production**: Deploy integrations and updates to live users. Each Release Environment is a separate project, with separate IDs, [Signing Keys](/getting-started/installing-the-connect-sdk#setup-with-your-own-authentication-backend), [Environment Secrets](/workflows/environment-secrets), and [Connected Users](/monitoring/users). **Note:** Release environments share the same underlying resources, such as servers and databases. Resource-intensive actions—like running heavy workflows or load testing—can impact the performance of other environments. If your account does not already have Release Environments enabled, follow the steps below to enable the feature. * **Note**: You can only set up one set of Release Environments (Development, Staging, Production) for your account. **Your selection is final and cannot be reversed.** 1. Start by navigating to your Paragon dashboard. At the end of your Integrations list, you will see a prompt to enable Release Environments. Click **Get started**. 2. You will be prompted to select the project that represents your Production Environment. **Once you make this selection:** 1. **The selected project will become read-only** (meaning that Integrations, Workflows, and App Events cannot be modified directly). To update a Production Environment, you will need to create a Versioned Release. 2. **Development and Staging environments will be automatically created**. If you have existing projects used for Staging or Development, these projects will still be available and unchanged, but they will not participate in the release pipeline. ## Usage With Release Environments, your team's integration development will start in the Development environment. Workflows and integrations in the Development environment can be added and modified directly. Once your team is ready to start testing the changes made in Development, you can create a Release from **Development -> Staging** to validate your changes. Staging can be used for code review and QA, prior to releasing changes to users in your Production environment. Finally, once your changes have been finalized in the Staging environment, you can create a Release from **Staging -> Production** to deploy your changes to live users. **Working with a large team?** Multiple team members can work together in the Development environment, or they can opt to create an isolated [Development Project](/deploying-integrations/projects) to start working on new changes. Development Projects cannot be involved in the Releases pipeline, but you can use our [Copying Workflows](/deploying-integrations/projects#copying-workflows) feature to replicate changes from Development Projects into Development. ## Creating a Release To start a new Release, you can click the Environment Selection menu in the top navigation bar and click **Deploy** on the environment you want to promote. When hovering over the **Deploy** button, a path will appear between the Release Environments that you are deploying to and from.